[ROZWIĄZANE] Prośba o modyfikacje ExpMod b...
R1d4r
28.08.2015
Proszę o zmodyfikowanie tego pluginu: http://amxx.pl/topic...mod-by-gt-team/
Chodzi głównie o public ZapiszExp(id) (linijka: 1904).
Opis bugu: Po zmianie nicku na serwerze, zapisuje exp na nowy nick i zostaje na starym.
Chciałbym, żeby nie było to możliwe. Próbowałem to zrobić, lecz za każdym razem wyskakiwały błędy.
Cel: Po zmianie nicku, exp się nie zapisuje.
Byłbym wdzięczny. Zamieszczam dodatkowo sma, bo je lekko edytowałem. ;-)
Załączone pliki
Sniper Elite
29.08.2015
Nie zedytuję pluginu, ale na swoim ZM EXP miałem podobny problem i ten plugin rozwiązał sprawę:
#include <amxmodx> #include <amxmisc> public plugin_init() { register_plugin("Blokada zmiany nicku","1.0","grankee") register_message(get_user_msgid("SayText"), "message") } public message() { new arg[32] get_msg_arg_string(2, arg, 31) if(containi(arg,"name")!=-1) { return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public client_infochanged(id) { new newname[32],oldname[32] get_user_info(id, "name", newname,31) get_user_name(id,oldname,31) new userid2 = get_user_userid(id); if(!is_user_connected(id) || is_user_bot(id)) return PLUGIN_CONTINUE if(!equal(newname, oldname)) { set_user_info(id,"name",oldname) client_print(id , print_chat , "[AMXX] Zakaz zmiany nicka! Kick!") server_cmd("kick #%d ^"%s^"",userid2,KICKREASON) return PLUGIN_HANDLED } return PLUGIN_CONTINUE }
Plugin zmienia nick na stary oraz wyrzuca gracza z serwera z odpowiednią informacją.
Dodatkowo umieść go zaraz pod pluganami od amxbansa w plugins.ini (nie wiem czy to coś daje, ale ja tak mam )
Linux'
29.08.2015
R1d4r
29.08.2015
Tak w ogóle to nie jest plugin grankee tylko F.E.A.R.&Many oraz przeróbki od RaYden z allied.
Na jakiej zasadzie miałbym zrobić pobieranie nicku?
Nie lepiej byłoby jakoś przypisać w putinie(putinserver), a potem nick jest nie ważny, bo przechowywany byłby do wyjścia gracza. Może tak by było lepiej? Czy może użyć public client_infochanged. Co byłoby lepsze?
Użytkownik Metal9712 edytował ten post 29.08.2015 13:41
R1d4r
30.08.2015
Prosiłbym o doklejenie tego postu do wyższego, ponieważ nie można go edytować, a szkoda.
Gdzieś na początku dodałem:
new infochanged[33]; new userid2[33];
Potem zmodyfikowałem trochę kod, a mianowicie wygląda teraz public ZapiszExp(id) tak:
/////////////////////////////////////////////////////// public message() { new arg[32] get_msg_arg_string(2, arg, 31) if(containi(arg,"name")!=-1) { return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public client_infochanged(id) { new newname[33],oldname[33] get_user_info(id, "name", newname,32) get_user_name(id,oldname,32) if(!is_user_connected(id) || is_user_bot(id))return PLUGIN_CONTINUE if(!equal(oldname, newname)) { infochanged[id] = 1; } return PLUGIN_CONTINUE } /////////////////////////////////////////////////////// public ZapiszExp(id) { if(doswiadczenie_gracza[id] <= 250) return; new dane[256]; if(infochanged[id] == 0) { get_user_name(id, nazwa_gracza, 32); plik = nvault_open("ExpMod") formatex(dane, 255, "%i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i", doswiadczenie_gracza[id], poziom_gracza[id], punkty_gracza[id], ultra_punkty_gracza[id], zycie_gracza[id], nowe_zycie_gracza[id], niewidzialnosc_gracza[id], nowa_niewidzialnosc_gracza[id], obrazenia_gracza[id], nowe_obrazenia_gracza[id], szybkosc_gracza[id], floatround(nowa_szybkosc_gracza[id]), grawitacja_gracza[id], floatround(nowa_grawitacja_gracza[id]), kasa_gracza[id], nowa_kasa_gracza[id], skoki_gracza[id], nowe_skoki_gracza[id], longjump_gracza[id], nowy_longujmp_gracza[id], longjump_s_czas[id], monety_gracza[id]) nvault_set(plik, nazwa_gracza, dane) nvault_close(plik) } else if(infochanged[id] == 1) { userid2[id] = get_user_userid(id); ColorChat(id, GREEN, "%s^x01Zakaz zmiany nicku! Zostajesz wykopany z serwera.", prefix); server_cmd("kick #%d ^"%s^"",userid2[id],"Zmieniles nick"); } }
Moje pytanie jest takie. Co zrobiłem tutaj źle, że dopiero jak gracz zmieni nick i wejdzie ponownie na serwer dostaje kick'a z powodem "Zmieniłeś nick". Zapisuje EXP i wszystko działa jakby bez tego. Prosiłbym o naprowadzenie, bądź poprawienie tego kodu. Cały dzień się męczyłem z dodaniem do putinserver, aż w końcu pomyślałem, że zrobię to jeszcze inaczej. Po prostu zablokuję możliwość zapisu w momencie, kiedy gracz zmieni nick i go wyrzuci z serwera. Jest mały problem, to mi nie chce działać.
W razie czego, zamieszczam .sma:
expmod.sma 71,53 KB 55 Ilość pobrań
Użytkownik Metal9712 edytował ten post 30.08.2015 02:43
Misiaczek ;c
30.08.2015
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL