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);
}


Dodatki SourceMod













