Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Mały problem z questem


Rekomendowane odpowiedzi

Opublikowano

Quest działa poprawnie, zapisuje nową nazwę gracza w Mysql jednak zmiany są widoczne dopiero po ponownym odpaleniu serwera.

Wie ktoś jak to naprawić aby wystarczało wylogowanie z gry ?

quest nazwa begin
    state start begin
        when login begin
            nazwy = "[VIP] "..pc.get_name()..""
            query("UPDATE player.player SET name='"..nazwy.."' WHERE account_id = '"..pc.get_account_id().."';")
            syschat("Otrzymano przydomek, proszę wykonać pełny relog.")
        end
    end
end

Screen z Mysql prezentujący zmiany:

 

http://scr.hu/1wsp/fci0b

Screen z gry gdzie nie ma zmian gdy nie zatrzymam serwera.

 

http://scr.hu/1wsp/4v2w9

 

Liczę na szybką pomoc, będą ++++

Opublikowano

quest wykona się tylko i wyłącznie po zalogowaniu do gry, jeśli chcesz aby quest wykonał siępodczas wylogowania musisz zrobić to tego zdarzenie które to obsłuży a mówiąc prościej dopisz do warunku login warunek logout

quest nazwa begin
    state start begin
        when login or logout begin
            nazwy = "[VIP] "..pc.get_name()..""
            query("UPDATE player.player SET name='"..nazwy.."' WHERE account_id = '"..pc.get_account_id().."';")
            syschat("Otrzymano przydomek, proszę wykonać pełny relog.")
        end
    end
end

8910814572903361049127.png

Opublikowano

@baran860

 

Zaraz sprawdze, w sumie nie pomyślałem.

 

Edit

 

Nadal jest tak samo, wyloguje się i mimo to w bazie zapisuje zmiany a loguje sie do gry i ciągle jest stary nick, nadal trzeba serwer zatrzymać i wystartować ponownie by było to widoczne..

Wersje questa zmieniłem bo tamten zmieniał wszystkim postaciom nicki na danym ID konta.

quest names begin
    state start begin
        when login or logout begin
            query("UPDATE player.player SET name='[VIP]"..pc.name.."' WHERE id = '"..pc.get_player_id().."';")
            syschat("Your nick is changed. Please logut now.")
        end
    end
end
Opublikowano

 

@baran860

 

Zaraz sprawdze, w sumie nie pomyślałem.

 

Edit

 

Nadal jest tak samo, wyloguje się i mimo to w bazie zapisuje zmiany a loguje sie do gry i ciągle jest stary nick, nadal trzeba serwer zatrzymać i wystartować ponownie by było to widoczne..

Wersje questa zmieniłem bo tamten zmieniał wszystkim postaciom nicki na danym ID konta.

quest names begin
    state start begin
        when login or logout begin
            query("UPDATE player.player SET name='[VIP]"..pc.name.."' WHERE id = '"..pc.get_player_id().."';")
            syschat("Your nick is changed. Please logut now.")
        end
    end
end

 

 

To użyj funkcji pc.change_name()

 

jeśli jej nie masz dopisz ją do quest_function

8910814572903361049127.png

Opublikowano

@baran860

 

Użyłem tego tak:

 

quest names begin
    state start begin
        when logout begin
        nick = pc.name
        nowy = "[VIP]"..nick..""
        pc.change_name(nowy)
        end
    end
end

 

I nie zapisuje zmian do bazy, w grze też nic się nie dzieje.

Opublikowano

@baran860

 

Użyłem tego tak:

quest names begin
    state start begin
        when logout begin
        nick = pc.name
        nowy = "[VIP]"..nick..""
        pc.change_name(nowy)
        end
    end
end

I nie zapisuje zmian do bazy, w grze też nic się nie dzieje.

pc.get_name() pobiera nazwę gracza

 

Zaraz napisze sobie questa sprawdzę i dam edita

8910814572903361049127.png

Opublikowano

@baran860

 

To są skrócone nazwy funkcji z questlib.lua

 

Patrz:

 

npc_index_table = {
    ['race'] = npc.getrace,
    ['empire'] = npc.get_empire,
}

pc_index_table = {
    ['weapon']        = pc.getweapon,
    ['level']        = pc.get_level,
    ['hp']        = pc.gethp,
    ['maxhp']        = pc.getmaxhp,
    ['sp']        = pc.getsp,
    ['maxsp']        = pc.getmaxsp,
    ['exp']        = pc.get_exp,
    ['nextexp']        = pc.get_next_exp,
    ['job']        = pc.get_job,
    ['money']        = pc.getmoney,
    ['gold']         = pc.getmoney,
    ['name']         = pc.getname,
    ['playtime']     = pc.getplaytime,
    ['leadership']     = pc.getleadership,
    ['empire']         = pc.getempire,
    ['skillgroup']     = pc.get_skill_group,
    ['x']         = pc.getx,
    ['y']         = pc.gety,
    ['local_x']     = pc.get_local_x,
    ['local_y']     = pc.get_local_y,
}

item_index_table = {
    ['vnum']        = item.get_vnum,
    ['name']        = item.get_name,
    ['size']        = item.get_size,
    ['count']        = item.get_count,
    ['type']        = item.get_type,
    ['sub_type']    = item.get_sub_type,
    ['refine_vnum']    = item.get_refine_vnum,
    ['level']        = item.get_level,
}
Opublikowano

 

@baran860

 

To są skrócone nazwy funkcji z questlib.lua

 

Patrz:

npc_index_table = {
    ['race'] = npc.getrace,
    ['empire'] = npc.get_empire,
}

pc_index_table = {
    ['weapon']        = pc.getweapon,
    ['level']        = pc.get_level,
    ['hp']        = pc.gethp,
    ['maxhp']        = pc.getmaxhp,
    ['sp']        = pc.getsp,
    ['maxsp']        = pc.getmaxsp,
    ['exp']        = pc.get_exp,
    ['nextexp']        = pc.get_next_exp,
    ['job']        = pc.get_job,
    ['money']        = pc.getmoney,
    ['gold']         = pc.getmoney,
    ['name']         = pc.getname,
    ['playtime']     = pc.getplaytime,
    ['leadership']     = pc.getleadership,
    ['empire']         = pc.getempire,
    ['skillgroup']     = pc.get_skill_group,
    ['x']         = pc.getx,
    ['y']         = pc.gety,
    ['local_x']     = pc.get_local_x,
    ['local_y']     = pc.get_local_y,
}

item_index_table = {
    ['vnum']        = item.get_vnum,
    ['name']        = item.get_name,
    ['size']        = item.get_size,
    ['count']        = item.get_count,
    ['type']        = item.get_type,
    ['sub_type']    = item.get_sub_type,
    ['refine_vnum']    = item.get_refine_vnum,
    ['level']        = item.get_level,
}

Nie mniej jednak sprawdź czy taki quest Ci zadziała:

 

quest zmiana_nazwy begin
	state start begin
		when letter begin
			send_letter("Zmień mi nazwę ")
		end
		when button or info begin
			say_title("Zwój:")
			say("Podaj mi nową nazwę ziom: ")
			nowa_nazwa = input()
			pc.change_name(tostring(nowa_nazwa))
			say_title("Zwój:")
			say("Od dzisiaj nazywasz się: "..tostring(nowa_nazwa))
			say("Nie zapomnij się przelogować ")
		end	
	end	
end
 

U mnie działa jak należy, po przelogowaniu postać dostaje nową nazwę. A jeśli chodzi o skrócone wersje to nie powinno być raczej tak:

 

nazwa = pc_index_table.name() 

spróbuj jednak bez tego Twojego dodatku

8910814572903361049127.png

Opublikowano

@baran860

 

Niestety ten quest tak nie może działać, bo ja do niego mam zamiar dodać pc.get_playtime() i od tego ma zależeć jego przydomek.

Np gra ponad godzinę to otrzymuje przydomek [LAIK]nazwa_gracza.

 

Teraz ogarniasz :)?

quest change_name begin
    state start begin
        when login or logout or kill or party_kill or levelup or button or info begin
            if pc.get_playtime() == 3600 then
            local nazwa = pc.get_name()
            nowa_nazwa = "[LAIK]"..nazwa.." "
            pc.change_name(nowa_nazwa)
            syschat(" Otrzymano nowy przydomek, przeloguj sie i sprawdź go ") 
            end
        end
    end
end

Ma dzialać na w/w zasadzie :)

Opublikowano

@baran860

 

Niestety ten quest tak nie może działać, bo ja do niego mam zamiar dodać pc.get_playtime() i od tego ma zależeć jego przydomek.

Np gra ponad godzinę to otrzymuje przydomek [LAIK]nazwa_gracza.

 

Teraz ogarniasz :)?

quest change_name begin
    state start begin
        when login or logout or kill or party_kill or levelup or button or info begin
            if pc.get_playtime() == 3600 then
            local nazwa = pc.get_name()
            nowa_nazwa = "[LAIK]"..nazwa.." "
            pc.change_name(nowa_nazwa)
            syschat(" Otrzymano nowy przydomek, przeloguj sie i sprawdź go ") 
            end
        end
    end
end

Ma dzialać na w/w zasadzie :)

Ok, wiem to jest przykład czy w ogóle ta funkcja zmienia Ci nazwę dlateog rosiłem Cię o sprawdzenie go czy działa.

8910814572903361049127.png

Opublikowano

@baran860

 

Zmienia, teraz wgraj sobie moją wersję i sprawdź czy zadziała u Ciebie :)

quest names begin -- Polecam zmianę nazwy questa ew. na czas prób usunąć folder object, wyłączyć serwa, skompilowac questa i włączyć z powrotem --
    state start begin
        when logout begin -- Jeśli się wylogujesz --
        nick = pc.get_name() -- albo pc.getname() narazie zostaw tak --
        nowy = "[VIP]"..tostring(nick) -- tostring dla pewności dajemy wskazówkę kompilatorowi że to jest napis --
        pc.change_name(tostring(nowy)) -- jak wyżej --
        end
    end
end

Spróbuj tak, ja będę dopiero za 2h

8910814572903361049127.png

Opublikowano

To daj po zalogowaniu żeby się wykonało

a wiesz o tym że przedrostki takie jak ,, [ '' są zablokowane w game i przez funkcje pc.change_name mu nie zmieni ? musiałby to edytować w source lub napisac difa pod swój game

 

Quest działa poprawnie, zapisuje nową nazwę gracza w Mysql jednak zmiany są widoczne dopiero po ponownym odpaleniu serwera.

Wie ktoś jak to naprawić aby wystarczało wylogowanie z gry ?

quest nazwa begin
    state start begin
        when login begin
            nazwy = "[VIP] "..pc.get_name()..""
            query("UPDATE player.player SET name='"..nazwy.."' WHERE account_id = '"..pc.get_account_id().."';")
            syschat("Otrzymano przydomek, proszę wykonać pełny relog.")
        end
    end
end

Screen z Mysql prezentujący zmiany:

http://scr.hu/1wsp/fci0b

Screen z gry gdzie nie ma zmian gdy nie zatrzymam serwera.

http://scr.hu/1wsp/4v2w9

Liczę na szybką pomoc, będą ++++

to nie ma prawa zadziałać gdyż baza odświeża się około 10 minut więc po wylogowaniu przywróci mu poprzedni nick , jeśli już chcesz tak zrobić z poziomu gry to musiałbyś z innego konta , oczywiście gdy postać na której będzie zmiana zostanie wylogowana 15 minut wcześniej.

Polecam ci zrobić to przez php na stronce aby logując się tam , wykupując tego [VIP] -a wykonało twoje zapytanie do sql .

Opublikowano

a wiesz o tym że przedrostki takie jak ,, [ '' są zablokowane w game i przez funkcje pc.change_name mu nie zmieni ? musiałby to edytować w source lub napisac difa pod swój game

 

to nie ma prawa zadziałać gdyż baza odświeża się około 10 minut więc po wylogowaniu przywróci mu poprzedni nick , jeśli już chcesz tak zrobić z poziomu gry to musiałbyś z innego konta , oczywiście gdy postać na której będzie zmiana zostanie wylogowana 15 minut wcześniej.

Polecam ci zrobić to przez php na stronce aby logując się tam , wykupując tego [VIP] -a wykonało twoje zapytanie do sql .

Po co skoro ma funkcję w grze zmieniającą nazwę

pc.change_name()

 

a co do zapytania to wykonać się wykona tylko tak jak wspomniałeś to odświeżenie nastąpi po jakimś czasie.

8910814572903361049127.png

Opublikowano

Po co skoro ma funkcję w grze zmieniającą nazwę

pc.change_name()

 

a co do zapytania to wykonać się wykona tylko tak jak wspomniałeś to odświeżenie nastąpi po jakimś czasie.

czytaj co napisałem , nie zmieni mu przez pc.change_name na przedrostek zaczynający się od ,, [ '' bo jest to zablokowane w game aby zwykły gracz nie mógł robić nicków np. [GM] , [GA] itp. ...

Opublikowano

Spróbuj dać spacje przed [ np.

nowy = " [Laik]"..pc.get_name()..""

pc.change_name(nowy)

 

Nie wiem jednak czy tak zadziała.




 





I'm here for You, not for myself

Always help You


 

Opublikowano

Spróbuj dać spacje przed [ np.

nowy = " [Laik]"..pc.get_name()..""

pc.change_name(nowy)

 

Nie wiem jednak czy tak zadziała.

Chyba nie bo to przeszukuje cały ciąg znaków w poszukiwaniu zakazanych znaków

8910814572903361049127.png

Opublikowano

A nie  ma jakiejś komedy na przeładowanie na nowo tabelki player ;)?

 

Bo jak zrobiłem query to wszystko pieknie działało, z tym że by ujrzeć zmiany należało zatrzymać serwer i wystartować ponownie.

Opublikowano

A nie  ma jakiejś komedy na przeładowanie na nowo tabelki player ;)?

 

Bo jak zrobiłem query to wszystko pieknie działało, z tym że by ujrzeć zmiany należało zatrzymać serwer i wystartować ponownie.

jest /flush id_postaci ale nie zdziw się jak po jej użyciu gdy na serwerze będzie 20+ graczy online uszkodzi ci się tabelka player :D

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...