AlliedModders Donor
Join Date: Sep 2017
Location: Czech republic
|
03-19-2018
, 16:46
Re: CreateTimer and using own cvar, it doesnt work, why?
|
#6
|
Okay, there is some update, but still doesnt work...
PHP Code:
#pragma semicolon 1
#define DEBUG
#define PLUGIN_AUTHOR "Javierko" #define PLUGIN_VERSION "1.0.0"
#include <sourcemod> #include <sdktools> #include <cstrike>
char g_szTag[64];
ConVar g_cvTag; ConVar g_cvTimerFirst; float g_fTimerFirst;
ConVar g_cvTimerSec; float g_fTimerSec;
ConVar g_cvTimerThd; float g_fTimerThd;
int m_hMyWeapons;
#pragma newdecls required
public Plugin myinfo = { name = "[CS:GO] Round item giver", author = PLUGIN_AUTHOR, description = "You can set by own item giver.", version = PLUGIN_VERSION, url = "https://github.com/javierko" };
public void OnPluginStart() { HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Pre);
g_cvTag = CreateConVar("sm_ig_chattag", "[SM]", "Sets tag for messages."); g_cvTag.AddChangeHook(OnConVarChanged); g_cvTag.GetString(g_szTag, sizeof(g_szTag));
g_cvTimerFirst = CreateConVar("sm_ig_giveknife", "60.0", "Sets a first time to drop knife", _, true, 1.0); g_fTimerFirst = g_cvTimerFirst.FloatValue; g_cvTimerSec = CreateConVar("sm_ig_givep250", "120.0", "Sets a time to drop P250", _, true, 1.0); g_fTimerSec = g_cvTimerSec.FloatValue; g_cvTimerThd = CreateConVar("sm_ig_giveump", "180.0", "Sets a time to drop UMP", _, true, 1.0); g_fTimerThd = g_cvTimerThd.FloatValue;
g_cvTimerFirst.AddChangeHook(OnConVarChanged); g_cvTimerSec.AddChangeHook(OnConVarChanged); g_cvTimerThd.AddChangeHook(OnConVarChanged);
AutoExecConfig(true, "RoundItemGiver"); }
public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue) { if(convar == g_cvTimerFirst) { g_fTimerFirst = StringToFloat(newValue); } else if(convar == g_cvTimerSec) { g_fTimerSec = StringToFloat(newValue); } else if(convar == g_cvTimerThd) { g_fTimerThd = StringToFloat(newValue); } else if(convar == g_cvTag) { strcopy(g_szTag, sizeof(g_szTag), newValue); } }
public Action Event_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "userid")); if(IsValidClient(client) && IsPlayerAlive(client)) { CreateTimer(g_fTimerFirst, GiveKnife, client); CreateTimer(g_fTimerSec, GiveP250, client); CreateTimer(g_fTimerThd, GiveUMP, client); } }
public Action GiveKnife(Handle timer, int userid) { int client = GetClientOfUserId(userid); if(IsValidClient(client) && IsPlayerAlive(client)) { if(!HasClientKnife(client)) { GivePlayerItem(client, "weapon_knife"); PrintToChat(client, "%s You got knife as present from server.", g_szTag); } PrintToChat(client, "%s Everybody got knife as present from server.", g_szTag); } return Plugin_Stop; }
public Action GiveUMP(Handle timer, int userid) { int client = GetClientOfUserId(userid); if(IsValidClient(client) && IsPlayerAlive(client)) { if(!HasClientPrimaryGun(client)) { GivePlayerItem(client, "weapon_ump45"); PrintToChat(client, "%s You got UMP as present from server.", g_szTag); } PrintToChat(client, "%s Everybody got knife as present from server.", g_szTag); } return Plugin_Stop; }
public Action GiveP250(Handle timer, int userid) { int client = GetClientOfUserId(userid); if(IsValidClient(client) && IsPlayerAlive(client)) { if(!HasClientSecundaryGun(client)) { GivePlayerItem(client, "weapon_p250"); PrintToChat(client, "%s You got p250 as present from server.", g_szTag); } PrintToChat(client, "%s Everybody got p250 as present from server.", g_szTag); }
return Plugin_Stop; }
public bool HasClientKnife(int client) { for(int i = 0; i < 128; i += 4) { int ent = GetEntDataEnt2(client, m_hMyWeapons + i); if(!IsValidEntity(ent)) { continue; } int iDefIndex = GetEntProp(ent, Prop_Send, "m_iItemDefinitionIndex"); switch(iDefIndex) { case 41: return true; //Knife case 42: return true; //Knife case 59: return true; //Knife case 500: return true; //Knife case 505: return true; //Knife case 506: return true; //Knife case 507: return true; //Knife case 508: return true; //Knife case 509: return true; //Knife case 512: return true; //Knife case 514: return true; //Knife case 515: return true; //Knife case 516: return true; //Knife } } return false; }
public bool HasClientSecundaryGun(int client) { for(int i = 0; i < 128; i += 4) { int ent = GetEntDataEnt2(client, m_hMyWeapons + i); if(!IsValidEntity(ent)) { continue; } int iDefIndex = GetEntProp(ent, Prop_Send, "m_iItemDefinitionIndex"); switch(iDefIndex) { case 1: return true; //Deagle case 2: return true; //Dual berretas case 3: return true; //Five-seven case 4: return true; //Glock case 30: return true; //Tec-9 case 32: return true; //P2000 case 36: return true; //P250 case 61: return true; //USP case 63: return true; //CZ75 case 64: return true; //Revolver } } return false; }
public bool HasClientPrimaryGun(int client) { for(int i = 0; i < 128; i += 4) { int ent = GetEntDataEnt2(client, m_hMyWeapons + i); if(!IsValidEntity(ent)) { continue; } int iDefIndex = GetEntProp(ent, Prop_Send, "m_iItemDefinitionIndex"); switch(iDefIndex) { case 7: return true; //AK-47 case 8: return true; //AUG case 9: return true; //AWP case 10: return true; //FAMAS case 11: return true; //G35G1 case 13: return true; //Galil case 14: return true; //M249 case 16: return true; //M4A4 case 17: return true; //MAC-10 case 19: return true; //P90 case 24: return true; //UMP case 25: return true; //XM1014 case 26: return true; //Bizon case 27: return true; //MAG case 28: return true; //negev case 29: return true; //Sawed Off case 33: return true; //MP7 case 34: return true; //MP9 case 35: return true; //nova case 38: return true; //scar case 39: return true; //SG 553 case 40: return true; //SSG 08 case 60: return true; //M4A1-S } } return false; }
stock bool IsValidClient(int client) { if (client <= 0 || client > MaxClients || !IsClientInGame(client)) { return false; } return true; }
__________________
|
|