Siemka, kiedyś próbowałem nauczyć się pisać w PAWN, jednak był to słomiany zapał, załapałem jedynie podstawy. Teraz znowu chcę spróbować. Dla treningu napisałem plugin. Jest to ruleta pod serwer z cod modem. Kompilować mi się nie chce. Nie potrafię tego naprawić. Chciałem prosić Was o pomoc, żebyście wyjaśnili co jest nie tak(nie chodzi mi, żeby plugin działał, bo i tak leci do śmietnika, po prostu chcę wiedzieć, jakie błędy popełniłem ) Zarzucam kod SMA:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fun>
#include <cstrike>
#define PLUGIN ""
#define VERSION ""
#define AUTHOR ""
new bool:uzyte[33] = false
new bool:losujacy[33] = false
public plugin_init()
{
register_plugin("PLUGIN", VERSION, AUTHOR)
register_clcmd("say /ruletka", "ruletka")
register_clcmd("say_team /ruletka", "ruletka")
register_event("HLTV", "reset_bool_uzyte", "a", "1=0", "2=0")
register_event("DeathMsg", "ustawienie_losujacy_false", "a")
register_logevent("sprawdzenie_losujacego", 2, "1=Round_Start")
}
public ruletka(id)
{
new kasa = cs_get_user_money(id)
new hp = get_user_health(id)
new dodac_hp = ((hp/100)*20)
new zabranie_hp = ((hp/100)*35)
new exp = cod_get_user_level(id)
new lvl = cod_get_user_level(id)
new dodany_exp = cod_get_level_xp(lvl+1) - exp
new odjety_exp = exp - cod_get_level_xp(lvl-1)
if(uzyte[id]==true)
{
client_print(id, print_chat, "juz uzyles ruletki w tej rundzie")
}
if(uzyte[id]==false)
{
if(kasa < 6000)
{
client_print(id, print_chat, "masz za malo kasy")
}
if(kasa > 5999)
{
uzyte[id]=true
cs_set_user_money(id, kasa - 6000)
switch(random_num(1, 10))
case 1:
{
set_user_health(id, hp+dodac_hp)
client_print(id, print_chat, "Wylosowales zwiekszenie HP o 20%")
}
case 2:
{
set_user_health(id, hp - zabranie_hp)
client_print(id, print_chat, "straciles 35% swojego HP")
}
case 3:
{
cod_give_weapon(id, CSW_AWP)
cod_give_weapon(id, CSW_M4A1)
client_print(id, print_chat, "dostajesz AWP i M4 dopoki nie zgineisz")
losujacy[id] = true
}
case 4:
{
strip_user_weapons(id)
client_print(id, print_chat, "cos zgubiles :)")
}
case 5:
{
cs_set_user_money(id, 16000)
client_print(id, print_chat, "hajs sie sypie")
}
case 6:
{
new strata = random_num(1, 8000)
cs_set_user_money(id, kasa - strata)
client_print(id, print_chat, "straciles %d kasy", strata)
}
case 7:
{
cod_set_user_xp(id, exp + dodany_exp)
client_print(id, print_chat, "zdobyles nowy poziom !")
}
case 8:
{
cod_set_user_xp(id, exp - odjety_exp)
client_print(id, print_chat, "straciles jeden poziom ")
}
case 9:
{
set_user_health(id, 0)
client_print(id, print_chat, "nie zyjesz")
}
case 10:
{
set_user_godmode(id, 1)
set_task(8.0, "niesmiertelnosc", .flags="a", 1)
}
}
}
}
public reset_bool_uzyte()
{
new i
for(i=0;i<33;i++)
{
uzyte[i] = false
}
}
public ustawienie_losujacy_false(zabity)
{
new zabity = read_data(1)
losujacy[id] = false
}
public sprawdzenie_losujacego(id)
{
if(losujacy[id] == false)
{
cod_take_weapon(id, CSW_M4A1)
cod_take_weapon(id, CSW_AWP)
}
}
public niesmiertelnosc(id)
{
set_user_godmode(id, 1)
Oprócz tego co niezbędne, do poprawnego skompilowania pluginu, prosiłbym o jakieś rady na przyszłość które mogą się przydać
Do tego jeszcze 2 pytania.
czy to:
new kasa = cs_get_user_money(id)
new hp = get_user_health(id)
new dodac_hp = ((hp/100)*20)
new zabranie_hp = ((hp/100)*35)
new exp = cod_get_user_level(id)
new lvl = cod_get_user_level(id)
new dodany_exp = cod_get_level_xp(lvl+1) - exp
new odjety_exp = exp - cod_get_level_xp(lvl-1)
dałem w dobrym miejscu, zastanawiam się czy nie powinno być
public ruletka(id)
TUTAJ
{
I drugie pytanie. Czy zmienna użyta w pętli for musi nazywać się "i", czy można użyć inną literę/wyraz, bo jak zauważyłem, to chyba, każdy daje "i" w tej pętli?
Oczywiście za pomoc lecą plusiki
@edit
Jeszcze jedno pytanie przypomniało mi się. Uważacie, że jest sens dawać takie nazwy publiców jak ja, chodziło mi o to, żeby od początku wpajać sobie pewne nawyki, żeby np. w przyszłości pisząc duży plugin czy mod nie pogubić się w tych wszystkich publicach i łatwiej było na nich operować
Użytkownik Piotreq183 edytował ten post 22.11.2013 20:09