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.