Witam, zrobiłem generatorem VIPa na HnS'a + edytowałem go troszkę, ale nie działa tak jak powinien działać.
Mianowicie nie wiem jaki mam błąd z set_task, że nie działa mi to, żeby dało granaty po czasie.
Chodzi mi o to, że jeśli gracz jest VIP'em i jest w CT, daj mu po 11 sekundach HE. Jeżeli gracz jest VIP'em i jest w TT, daj mu po 11 sekundach smokegrenade.
tutaj kod .sma:
#include <amxmodx> #include <cstrike> #include <fun> #include <hamsandwich> #include <amxmisc> forward amxbans_admin_connect(id); new Array:g_Array, bool:g_Vip[33]; public plugin_init(){ register_plugin("VIP Ultimate", "12.3.0.2", "benio101 & speedkill"); RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1); register_event("DeathMsg", "DeathMsg", "a"); register_message(get_user_msgid("ScoreAttrib"), "VipStatus"); g_Array=ArrayCreate(64,32); register_clcmd("say /chcevipa","ShowMotd") } public client_authorized(id){ if(get_user_flags(id) & 524288){ client_authorized_vip(id); } } public client_authorized_vip(id){ g_Vip[id]=true; new g_Name[64]; get_user_name(id,g_Name,charsmax(g_Name)); new g_Size = ArraySize(g_Array); new szName[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, szName, charsmax(szName)); if(equal(g_Name, szName)){ return 0; } } ArrayPushString(g_Array,g_Name); return PLUGIN_CONTINUE; } public client_disconnect(id){ if(g_Vip[id]){ client_disconnect_vip(id); } } public client_disconnect_vip(id){ g_Vip[id]=false; new Name[64]; get_user_name(id,Name,charsmax(Name)); new g_Size = ArraySize(g_Array); new g_Name[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); if(equal(g_Name,Name)){ ArrayDeleteItem(g_Array,i); break; } } } public SpawnedEventPre(id){ if(g_Vip[id]){ if(is_user_alive(id)){ } } } public SpawnedEventPreVip(id){ set_user_health(id, get_user_health(id)+10); new g_Model[64]; formatex(g_Model,charsmax(g_Model),"%s",get_user_team(id) == 1 ? "VipSongo2" : "VipNeo2"); cs_set_user_model(id,g_Model); if(get_user_team(id)==1){ set_task(11.0,"smokegrenade",id) } if(get_user_team(id)==2){ set_task(11.0,"hegrenade",id) } } public hegrenade(id){ give_item(id,"weapon_hegrenade"); } public smokegrenade(id){ give_item(id,"weapon_smokegrenade"); } public DeathMsg(){ new killer=read_data(1); new victim=read_data(2); if(is_user_alive(killer) && g_Vip[killer] && get_user_team(killer) != get_user_team(victim)){ DeathMsgVip(killer,victim,read_data(3)); } } public DeathMsgVip(kid,vid,hs){ set_user_health(kid, min(get_user_health(kid)+(hs?10:10),150)); } public VipStatus(){ new id=get_msg_arg_int(1); if(is_user_alive(id) && g_Vip[id]){ set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4); } } public PrintText(id) { client_print(id, print_chat, "[VIP] Napisz /chcevipa zeby zobaczyc cene i przywileje VIPa") } public ShowMotd(id) { show_motd(id, "vip.txt") } public client_infochanged(id){ if(g_Vip[id]){ new szName[64]; get_user_info(id,"name",szName,charsmax(szName)); new Name[64]; get_user_name(id,Name,charsmax(Name)); if(!equal(szName,Name)){ ArrayPushString(g_Array,szName); new g_Size=ArraySize(g_Array); new g_Name[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); if(equal(g_Name,Name)){ ArrayDeleteItem(g_Array,i); break; } } } } } public plugin_end(){ ArrayDestroy(g_Array); } public plugin_precache(){ precache_model("models/player/VipNeo2/VipNeo2.mdl"); precache_model("models/player/VipSongo2/VipSongo2.mdl"); } public amxbans_admin_connect(id){ client_authorized(id); }