Hookowanie Sayu
Raku129
22.05.2011
Mam dalej problem z wysyłaniem pokemon dolarów:
- Chyba wyslij bierze za nick, powinno być wyslij nick ilosc
- Teraz wpisuje wyslij nick ilosc (to pisze mi Gracz nie istnieje, a nie pokazuje jego nicku, przed zhookowaniem na say był)
- Jeżeli gracz wyśle komuś PD to pisze mu że wysłał tam komuś i jeszcze pokazuje mu Nie masz tyle PD.
- Gdy gracz nie ma PD to nie wysyła nikomu PD, nie będzie miał PD na -, ale nie wyświetla Nie masz tyle PD.
Edited by Raku129, 22.05.2011 14:04.
- Chyba wyslij bierze za nick, powinno być wyslij nick ilosc
- Teraz wpisuje wyslij nick ilosc (to pisze mi Gracz nie istnieje, a nie pokazuje jego nicku, przed zhookowaniem na say był)
- Jeżeli gracz wyśle komuś PD to pisze mu że wysłał tam komuś i jeszcze pokazuje mu Nie masz tyle PD.
- Gdy gracz nie ma PD to nie wysyła nikomu PD, nie będzie miał PD na -, ale nie wyświetla Nie masz tyle PD.
public Send(id) { static args[256]; read_args(args, 255); replace(args, 255, "^"", ""); if(contain(args, "wyslij") != -1) { new pd_gracza = pd[id] new arg1[33]; new arg2[10]; read_argv(1,arg1,32); read_argv(2,arg2,9); new Player = cmd_target(id, arg1, 0); remove_quotes(arg2); new exp = str_to_num(arg2); if (!Player) { ColorChat(id, GREEN, "[PD] ^x03Gracz %s nie istnieje.", arg2); } else { new name[33] get_user_name(id, name, 32) if( pd_gracza < exp) return PLUGIN_HANDLED; { ColorChat(id, GREEN, "[PD] ^x03Nie masz tyle PD."); } static gName[33], pName[33]; get_user_name(id, gName, charsmax(gName)); get_user_name(Player, pName, charsmax(pName)); TakePD(id, exp); AddPD(Player, exp); ColorChat(id, GREEN, "[PD] ^x03Wyslales ^x01 %s %d ^x03 PD", pName, exp); ColorChat(Player, GREEN, "[PD] ^x01 %s ^x03Wyslal ci ^x01 %d ^x03 PD", gName, exp); } } return PLUGIN_CONTINUE; }
Edited by Raku129, 22.05.2011 14:04.
R3X
23.05.2011
hook z saya otrzymuje zawsze 2 parametry:
0 - say
1 - "to co napisałeś"
więc read_argv nie ma tutaj żadnego sensu, weź cały args, usuń cudzysłowy przez remove_quotes a potem sparsuj
0 - say
1 - "to co napisałeś"
więc read_argv nie ma tutaj żadnego sensu, weź cały args, usuń cudzysłowy przez remove_quotes a potem sparsuj
public send(id){ static args[256]; read_args(args, 255); remove_quotes(args); new szCmd[15], szNick[32], szPD[12]; new parsed = parse(args, szCmd, 14, szNick, 31, szPD, 11) if(parsed && equali(szCmd, "/wyslij")){ if(parsed < 3){ client_print(id, print_chat, "Uzycie: /wyslij <Gracz> <Punkty>"); return PLUGIN_HANDLED; } new Player = cmd_target(id, szNick, 0); new iPD = str_to_num(szPD); log_amx("Komu %s, ile %d", szNick, iPD); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
Raku129
23.05.2011
Nie za bardzo kumam co napisałeś, uczę się ale to jest czarna magia.
W tym co dałeś coś sprawdza czy taki gracz jest, czy w ma tyle PD itd.?
Widzę to ale nie ogarniam
Nie ogarniam całego, new player jest w ogóle teraz potrzebne?
Nie ma odejmowania i dodawania expa też chyba.
Edited by Raku129, 23.05.2011 13:30.
W tym co dałeś coś sprawdza czy taki gracz jest, czy w ma tyle PD itd.?
Widzę to ale nie ogarniam
if(parsed < 3){
Nie ogarniam całego, new player jest w ogóle teraz potrzebne?
Nie ma odejmowania i dodawania expa też chyba.
Edited by Raku129, 23.05.2011 13:30.
R3X
23.05.2011
Wskazałem błąd w twojej funkcji i naprawdę niewiele potrzeba, żeby je dobrze posklejać. Nazwy zmiennych wskazują co zawierają. W moim kodzie brakuje sprawdzania warunków i przekazania doświadczenia, bo to wszystko masz w swoim. Nie będę nic za Ciebie robił. I tak masz szczęście, że nie dostałeś warna za to PW.
Raku129
23.05.2011
Dobra ja niczego nie rozumiem, zostawię to - trudno nie będzie wysyłania.
Przerobiłem to i jest pełno błędów.
Przerobiłem to i jest pełno błędów.
R3X
23.05.2011
Niech niemożliwe stanie się prawdziwe.
Następny temat załóż w Pytania i zacznij: "Kto zrobi dla mnie...", bo wyglądało jakbyś był programistą.
public Send(id){ static args[256]; read_args(args, 255); remove_quotes(args); new szCmd[15], szNick[32], szPD[12]; new parsed = parse(args, szCmd, 14, szNick, 31, szPD, 11) if(parsed && equali(szCmd, "/wyslij")){ if(parsed < 3){ client_print(id, print_chat, "Uzycie: /wyslij <Gracz> <Punkty>"); return PLUGIN_HANDLED; } new Player = cmd_target(id, szNick, 0); if(!Player){ ColorChat(id, GREEN, "[PD] ^x03Gracz %s nie istnieje.", szNick); return PLUGIN_HANDLED; } new iPD = str_to_num(szPD); if( pd[id] < iPD){ ColorChat(id, GREEN, "[PD] ^x03Nie masz tyle PD."); return PLUGIN_HANDLED; } TakePD(id, iPD); AddPD(Player, iPD); new szNick2[32]; get_user_name(id, szNick2, 31); get_user_name(Player, szNick, 31); ColorChat(id, GREEN, "[PD] ^x03Wyslales ^x01 %s %d ^x03 PD", szNick, iPD); ColorChat(Player, GREEN, "[PD] ^x01 %s ^x03Wyslal ci ^x01 %d ^x03 PD", szNick2, iPD); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
Następny temat załóż w Pytania i zacznij: "Kto zrobi dla mnie...", bo wyglądało jakbyś był programistą.
Raku129
23.05.2011
Ja się uczę analizować kod, chociaż i tak mi to bardzo ciężko idzie.
Czasem jest tak że jeden dzień się uczę jakieś funkcji.
Dzięki wielkie. Rozumiem już teraz mniej więcej.
Czasem jest tak że jeden dzień się uczę jakieś funkcji.
Dzięki wielkie. Rozumiem już teraz mniej więcej.