←  Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

Modyfikacja
[ROZWIĄZANE] Prośba o modyfikacje ExpMod b...

Zablokowany

  • +
  • -
R1d4r - zdjęcie 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

  • Załączony plik  expmod.sma   70,68 KB   57 Ilość pobrań
Odpowiedz

  • +
  • -
Sniper Elite - zdjęcie 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 :) )

 

Odpowiedz

  • +
  • -
Linux' - zdjęcie Linux' 29.08.2015

To co podal sniper rozwiaze sprawe. Lub jezeli nie chcesz blokowac zmiany, to wystarczy pobierac nick do zmiennej przy zmianie nicku gracza.
Odpowiedz

  • +
  • -
R1d4r - zdjęcie 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
Odpowiedz

  • +
  • -
R1d4r - zdjęcie 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ć.  :mur:

 

W razie czego, zamieszczam .sma:

Załączony plik  expmod.sma   71,53 KB   55 Ilość pobrań


Użytkownik Metal9712 edytował ten post 30.08.2015 02:43
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 30.08.2015

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany