Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
CoD Nowy

Naprawa natywu cod_get_user_perk

CoD Nowy

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
18 odpowiedzi w tym temacie

#1 Goliath

    Godlike

  • Przyjaciel

Reputacja: 1 237
Godlike

  • Postów:2 334
  • GG:
  • Steam:steam
  • Imię:Maciej
  • Lokalizacja:Mońki
Offline

Napisano 14.09.2011 20:16

*
Popularny

Sporo czasu temu zauważyłem, że natyw cod_get_user_perk nie działa do końca jak należy tzn. nie zwraca wartości perku. W końcu wykombinowałem, jak to naprawić :D.

1. Otwieramy plik QTM_CodMod.sma.
2. W funkcji plugin_natives zmieniamy:
register_native("cod_get_user_perk", "PobierzPerk", 1);
Na:
register_native("cod_get_user_perk", "PobierzPerk");
3. Zmieniamy funkcję PobierzPerk na:
public PobierzPerk(plugin, params)
{
	if(!(0 < params < 3))
		return 0;
	
	new id = get_param(1);
	if(!is_user_connected(id))
		return 0;
	
	if(params == 2)
		set_param_byref(2, wartosc_perku_gracza[id]);
	
	return perk_gracza[id];
}
4. Kompilujemy plik i gotowe! :D
sharkowy (19.09.2011 19:56):
Podklejam temat.

Użytkownik Goliath edytował ten post 14.09.2011 20:19

  • +
  • -
  • 30

#2 System'ek

    Banned

  • Zbanowany

Reputacja: 21
Życzliwy

  • Postów:119
  • GG:
  • Steam:steam
  • Imię:Przemek
  • Lokalizacja:Biłgoraj
Offline

Napisano 14.09.2011 20:21

+ :D

#3 HaDeS From HELL

    CoD MoD Fanatyk

  • Użytkownik

Reputacja: 163
Profesjonalista

  • Postów:453
  • Lokalizacja:Szczecin
Offline

Napisano 14.09.2011 20:48

:ok: heh nareszcie ktoś to naprawił :P ++
  • +
  • -
  • 0

#4 Kolar`.

    Guru

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:704
  • GG:
  • Imię:Kamil
  • Lokalizacja:Jastrzębie Zdrój
Offline

Napisano 14.09.2011 21:10

Głupie pytanie, a jak nie było naprawione to co się działo ?

#5 sharkowy

    Lokalna anomalia sejsmiczna o nieustalonej genezie.

  • Przyjaciel

Reputacja: 113
Zaawansowany

  • Postów:1 981
Offline

Napisano 15.09.2011 12:22

natyw cod_get_user_perk nie działa do końca jak należy tzn. nie zwraca wartości perku.


Teraz wiesz?

Gud dżab goliad.
  • +
  • -
  • 0

#6 Twinn

    Zaawansowany

  • Użytkownik

Reputacja: 4
Nowy

  • Postów:78
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Osobnica
Offline

Napisano 15.09.2011 17:28

Nareszczie ktoś wpadł na pomysł jak to naprawić :)

+
  • +
  • -
  • 0
b_350_20_692108_381007_FFFFFF_000000.png
b_350_20_692108_381007_FFFFFF_000000.png
b_350_20_692108_381007_FFFFFF_000000.png
b_350_20_692108_381007_FFFFFF_000000.png

#7 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 161
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 18.09.2011 15:35

natyw cod_get_user_perk nie działa do końca jak należy tzn. nie zwraca wartości perku

zwracać on nigdy go nie zwracał jedynie mogłeś go pobrać przez referencje :o

@Edit
Sprawdziłem silnik cod moda i można by tak jeszcze pobierać wartości


#include <amxmodx>
#include <amxmisc>
#include <codmod>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "cypis"

new g_perk[33], g_wartosc[33];

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /sprawdz", "Sprawdz");
}

public cod_perk_changed(id, perk, wartosc)
{
g_perk[id] = perk;
g_wartosc[id] = wartosc;
}

public Sprawdz(id)
{
new nazwa[32]
cod_get_perk_name(g_perk[id], nazwa, charsmax(nazwa));
client_print(id, 3, "nazwa %s, wartosc %i", nazwa, g_wartosc[id]);
}

tyle że uwaga foward cod_perk_changed ma bład w bibioteczce peyote nie dodał tak:

forward cod_perk_changed(id, perk, wartosc);
tylko
forward cod_perk_changed(id, perk);

Użytkownik Cypis' edytował ten post 18.09.2011 17:25

  • +
  • -
  • 0

#8 Goliath

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 1 237
Godlike

  • Postów:2 334
  • GG:
  • Steam:steam
  • Imię:Maciej
  • Lokalizacja:Mońki
Offline

Napisano 20.09.2011 13:52

zwracać on nigdy go nie zwracał jedynie mogłeś go pobrać przez referencje :o

To miałem na myśli :P.

Podklejam temat.

Podziękował :D
  • +
  • -
  • 0

#9 ToRRent

    Czempion

  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 24.09.2011 09:36

Może i to działa ale ja mam błędy przez to w dodatku w takich miejscach że aż nie mogę uwierzyć

L 09/23/2011 - 15:59:41: [AMXX] Displaying debug trace (plugin "QTM_CodMod.amxx")
L 09/23/2011 - 15:59:41: [AMXX] Run time error 3: stack error
L 09/23/2011 - 15:59:41: [AMXX] [0] QTM_CodMod.sma::ZapiszDane (line 891)

new vaultkey[128],vaultdata[256], identyfikator[64];

Cała funkcja
public ZapiszDane(id)
{
if(!klasa_gracza[id])
return PLUGIN_CONTINUE;

new vaultkey[128],vaultdata[256], identyfikator[64];
format(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]);

new typ_zapisu = get_pcvar_num(cvar_typ_zapisu);

switch(typ_zapisu)
{
case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]);
case 2: get_user_authid(id, identyfikator, charsmax(identyfikator));
case 3: get_user_ip(id, identyfikator, charsmax(identyfikator));
}

format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa_gracza[id]], typ_zapisu);
nvault_set(vault,vaultkey,vaultdata);

return PLUGIN_CONTINUE;
}

L 09/23/2011 - 15:59:41: [AMXX] [1] QTM_CodMod.sma::SprawdzPoziom (line 1005)
ZapiszDane(id);

Cała funkcja
public SprawdzPoziom(id)
{
new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);

new bool:zdobyl_poziom = false, bool:stracil_poziom = false;

while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
{
poziom_gracza[id]++;
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
zdobyl_poziom = true;
}

while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))
{
poziom_gracza[id]--;
stracil_poziom = true;
}
if(poziom_gracza[id] >= limit_poziomu)
{
poziom_gracza[id] = limit_poziomu;
ResetujPunkty(id);
inteligencja_gracza[id] = 60;
zdrowie_gracza[id] = 100;
wytrzymalosc_gracza[id] = 70;
kondycja_gracza[id] = 70;
client_print(id, print_chat, "[COD:MW] Zdobyles ostatni 100 poziom ta klasa !");
client_print(id, print_chat, "[COD:MW] Twoje statystyki sa ustawione na maxa");
}
if(stracil_poziom)
{
ResetujPunkty(id);
client_cmd(id, "spk TM_CodMod/leveldown");
COD_MSG_NEWS_N;
ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]);
}
else if(zdobyl_poziom)
{
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
COD_MSG_NEWS_P;
ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
client_cmd(id, "spk TM_CodMod/newlvl");
}
ZapiszDane(id);
if(awansuje_do[klasa_gracza[id]])
{
if(poziom_gracza[id] >= awanse[ZnajdzAwans(klasa_gracza[id], awansuje_do[klasa_gracza[id]])][2])
{
COD_MSG_NEWS_P;
ShowSyncHudMsg(id, SyncHudObj2, "Osiagajac poziom %i, twoja klasa awansowala do stopnia: %s!^nOtrzymales +15 do kazdej statystyki", poziom_gracza[id], nazwy_klas[awansuje_do[klasa_gracza[id]]]);
client_cmd(id, "spk QTM_CodMod/levelup");
new temp_int = inteligencja_gracza[id], temp_zdr = zdrowie_gracza[id], temp_kon = kondycja_gracza[id], temp_wyt = wytrzymalosc_gracza[id], temp_exp = doswiadczenie_gracza[id], temp_lvl = poziom_gracza[id];
nowa_klasa_gracza[id] = awansuje_do[klasa_gracza[id]];
UstawNowaKlase(id);
poziom_gracza[id] = temp_lvl;
doswiadczenie_gracza[id] = temp_exp;
wytrzymalosc_gracza[id] = temp_wyt;
zdrowie_gracza[id] = temp_zdr;
kondycja_gracza[id] = temp_kon;
inteligencja_gracza[id] = temp_int;
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
DajBronie(id);
ZastosujAtrybuty(id);
ZapiszDane(id);
}
}
}

L 09/23/2011 - 15:59:41: [AMXX] [2] QTM_CodMod.sma::ObrazeniaPost (line 421)
SprawdzPoziom(attacker);

Cała funkcja
public ObrazeniaPost(id, idinflictor, attacker, Float:damage, damagebits)
{
if(!is_user_connected(attacker) || !klasa_gracza[attacker])
return HAM_IGNORED;

if(get_user_team(id) != get_user_team(attacker))
{
new doswiadczenie_za_obrazenia = get_pcvar_num(cvar_doswiadczenie_za_obrazenia);
while(damage>20)
{
damage -= 20;
doswiadczenie_gracza[attacker] += doswiadczenie_za_obrazenia;
}
}
SprawdzPoziom(attacker);
return HAM_IGNORED;
}

Użytkownik =ToRRent= edytował ten post 24.09.2011 12:06

  • +
  • -
  • 0

#10 Jak się nazwać

    Wszechmogący

  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 25.09.2011 13:57

Torrent zapewne wgrałeś poprawkę ZadajObrażenie od cypisa ? Ja właśnie jak to wgrałem tez mi takie rlogi zaczeły wywalać daj zwykłą wersję.
@@
Może daj przykład jak to zastosować dla zielonych ;P
  • +
  • -
  • 1
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#11 ToRRent

    Czempion

  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 25.09.2011 15:06

hmm tak skorzystałem z kodu cypisa tylko że wcześniej nie miałem żadnych problemów z tym (to znaczy w ogóle nie mam problemów) czasem coś w logach wyskoczy i kij z tym :P
  • +
  • -
  • 1

#12 Jak się nazwać

    Wszechmogący

  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 19.10.2011 07:56

Działa to tak? bo nie czaje zbytnio tego parms;p
PobierzPerk(id, 2) - zwraca wartosc
PobierzPerk(id, 1) - zwraca perk

?
  • +
  • -
  • 1
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#13 Goliath

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 1 237
Godlike

  • Postów:2 334
  • GG:
  • Steam:steam
  • Imię:Maciej
  • Lokalizacja:Mońki
Offline

Napisano 21.10.2011 18:11

Nie. Tutaj masz, jak tego używać:
http://amxx.pl/dokum...d-get-user-perk
  • +
  • -
  • 1

#14 daniok45

    Nowy

  • Nowy

Reputacja: 1
Nowy

  • Postów:4
  • Lokalizacja:CS
Offline

Napisano 11.03.2012 16:45

Siema mam problem co do tej łatki, mianowicie kiedy robię wszystko co w instrukcji kompiluję i odpalam nie działają mi klasy, magazyn, perki itp. Bardzo bym prosił o pliczek QTM_CodMod ze skonfigurowanymi funkcjami. Z góry dziękuję (sory za archeologię)
  • +
  • -
  • 0

#15 kozix

    Zaawansowany

  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:98
  • Imię:koza
  • Lokalizacja:kujawy
Offline

Napisano 17.03.2012 08:25

A co jeśli ktoś ma 2 sloty na perk? Jak to naprawić?
  • +
  • -
  • 0

#16 Sewek

    Pomocny

  • Zbanowany

Reputacja: 4
Nowy

  • Postów:64
  • Lokalizacja:Daleko
Offline

Napisano 01.04.2012 21:58

cypys juz chyba dodał naprawiona wersje w Poradniku na 2 perki

#17 rysiek4213

    Życzliwy

  • Użytkownik

Reputacja: -1
Nowy

  • Postów:31
  • Imię:Kamil
  • Lokalizacja:Olsztyn
Offline

Napisano 22.04.2012 16:01

to podajcie link, bo mam na swoim codzie 2 perki, a jak wklejam powyższą funkcje to nie kompiluje mi pluginu.
  • +
  • -
  • 0

#18 adif11

    Wszechpomocny

  • Zbanowany

Reputacja: 19
Początkujący

  • Postów:357
  • Imię:adrian
  • Lokalizacja:szczecin
Offline

Napisano 15.01.2013 17:16

Wiem że odkop no ale ;D wole się upewnić stara funkcja to jest to?
public PobierzPerk(id, &wartosc) { wartosc = wartosc_perku_gracza[id]; return perk_gracza[id]; }

Zapraszam Serdecznie Na Cod Mod'a [401 lvl]

b_350_20_FFFFFF_FFFFFF_000000_000000.png


#19 adif11

    Wszechpomocny

  • Zbanowany

Reputacja: 19
Początkujący

  • Postów:357
  • Imię:adrian
  • Lokalizacja:szczecin
Offline

Napisano 16.01.2013 22:12

Refresh odpowie ktos? ;<

Wysyłane z mojego MB525 za pomocą Tapatalk 2

Zapraszam Serdecznie Na Cod Mod'a [401 lvl]

b_350_20_FFFFFF_FFFFFF_000000_000000.png






Również z jednym lub większą ilością słów kluczowych: CoD Nowy

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych