Klamry zawsze na wysokosci funkcji:
public event_curweapon (id)
{
if (zmienna==1)
{
for(new i=0;i<33;i++)
{
}
}
}Pomijamy klamry gdy jest tylko 1 linia kodu:
public event_curweapon (id)
{
if (zmienna==1)
for(new i=0;i<33;i++)
while(get_user_health(i)<random_num(0,100))
{
if(a==<img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> client_print(i,print_chat,"ab")
else if(a><img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> client_print(i,print_chat,"a")
else client_print(i,print_chat,"b")
}
}Przy 1. if i for mozna stosowac jeszcze klamry bo ulatwia to troche utrzymaniu kodu. Ale przy ostatnich pozbywamy sie ich, a z powod, ze kod jest krotki to dajemy go zaraz za if'em.Elementu kodu ktore nie potrzebuja ustalonej kolejnosci ustawiamy tematycznie:
register_touch("throwing_knife", "player", "touchKnife")
register_touch("throwing_knife", "worldspawn", "touchWorld")
register_touch("throwing_knife", "func_wall", "touchWorld")
register_touch("throwing_knife", "func_door", "touchWorld")
register_touch("throwing_knife", "func_door_rotating", "touchWorld")
register_touch("throwing_knife", "func_wall_toggle", "touchWorld")
register_touch("throwing_knife", "func_breakable", "touchWorld")
register_cvar("diablo_knife","20")
register_cvar("diablo_knife_speed","1000")Lub wedlug typu funkcji:
g_msg_bartime = get_user_msgid("BarTime")
g_msg_clcorpse = get_user_msgid("ClCorpse")
g_msg_screenfade = get_user_msgid("ScreenFade")
g_msg_statusicon = get_user_msgid("StatusIcon")
register_cvar("diablo_sql_host","localhost",FCVAR_PROTECTED)
register_cvar("diablo_sql_user","root",FCVAR_PROTECTED)
register_cvar("diablo_sql_pass","root",FCVAR_PROTECTED)
register_cvar("diablo_sql_database","dbmod",FCVAR_PROTECTED)
register_event("CurWeapon","CurWeapon","be")
register_event("Damage", "Damage", "b", "2!0")
register_event("DeathMsg","DeathMsg","ade")
register_event("ResetHUD", "ResetHUD", "abe")
register_logevent("RoundStart", 2, "0=World triggered", "1=Round_Start")
register_logevent("award_plant", 3, "2=Planted_The_Bomb");
register_clcmd("say /Pomoc","helpme")
register_clcmd("say /Klasa","changerace")
register_clcmd("say /speed","speed")==================================================
Nazewnictwo - stosujemy zawsze takie nazwy cvarow, zmiennych i funkcji by mozna sie domyslic do czego sluza bez ogladania kodu np. id - gracz (jesli kozystamy rownoczesnie z id kilku graczy to mozemy nazwac (sry ale przyzwyczailem sie do ang. w pawnie) KillerID (kid), victimID (vid)).
Zmienne globalne z przedrostkiem g_ (moze sam tego zbytnio nie stosuje, ale to ulatwia czytanie kodu!).
Nazwy funkcji (np. wzgledem eventa) moga byc dowolne, ale piszemy tak by wiadomo bylo co chcemy by sie w niej dzialo.
===================================================
Uzywamy stalych (i eNUM'ow) [code#define TOTAL_RACES 4
#define TOTAL_CLASSES 3 [/code]
Szczegolnie gdy w wielu miejsciach musi byc ta sama liczba lub gdy odpowiada im konkretna wlasciwosc (np. MOVETYPE_FLY zamiast 5 - eNUM).
===================================================
Uzywamy komentarzy, szczegolnie gdy dana czesc kodu sprawiala nam problemy lub jest szczegolnie wazna!
PS. Kod jest nie kompletny i wyrwany z 'kontekstu', proszę tylko zwracac uwage na uklad kodu.
PS2. Jak tos pamieta jeszcze jakas zasade to niech poda to dodam do tutka.


Dodatki SourceMod













