Mam problem z sklepem, nie chce mi dzialac komenda jb_packgive, poprostu nie dodaje jbpackow. 2 problem to ze niekiedy usuwaja sie t e jbpacki 1 z graczy
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <colorchat>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <engine>
#include <fakemeta_util>
#include <nvault>
#define PLUGIN "JBPacki"
#define VERSION "1.0"
#define AUTHOR "Zero"
#define prefix "Sklep"
#define FL_WATERJUMP (1<<11)
#define FL_ONGROUND (1<<9)
#define autobhopkeys (1<<0)|(1<<1)
new pPcvarDBHost;
new pPcvarDBUser;
new pPcvarDBPassword;
new pPcvarDBBase;
new Handle:g_SqlTuple;
new g_Cache[512];
new bool:SQLenabled;
new bool:gIntermission;
new gTablesLoaded[33];
new gSaveKey[33][32];
new ilosc_jbpack[33];
new bool:bhop_enabled[33];
new speed[33];
new CT_Skins[4][] = {"klawisz_cypis","klawisz_cypis","klawisz_cypis","klawisz_cypis"};
new Terro_Skins[4][] = {"wiezien_cypis","wiezien_cypis","wiezien_cypis","wiezien_cypis"};
new jb_packi_nv
new msgtext;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
pPcvarDBHost = register_cvar("db_host", "xx"); //ip bazy danych
pPcvarDBUser = register_cvar("db_user", "zz"); //nazwa uzytkownika
pPcvarDBPassword = register_cvar("db_pass", "cc"); //haslo do bazy danych
pPcvarDBBase = register_cvar("db_database", "vv"); //nazwa bazy danych
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
register_clcmd("say /sklep", "jb_sklep")
register_clcmd("say_team /sklep", "jb_sklep")
register_cvar("jb_tt", "1" );
register_cvar("jb_ct", "2" );
register_cvar("jb_ct_vip", "2" ); // Ilosc przyznawanych dragow za zabicie. ( VIP )
register_cvar("jb_zapis", "1"); //1 - nvault, 2 - sql
register_cvar("jb_hud", "1"); //0 - off, 1 - status, 2 - hud
if(get_cvar_num("jb_zapis") == 2) {
jb_packi_nv = nvault_open("jb_packi")
if(jb_packi_nv == INVALID_HANDLE)
set_fail_state("Nie moge otworzyc pliku");
}
register_event("DeathMsg", "DeathMsg", "a")
register_logevent("Koniec_Rundy", 2, "1=Round_End")
register_logevent("Poczatek_Rundy", 2, "1=Round_Start")
register_event("ResetHUD","HUD", "b");
register_concmd("jb_packgive", "cmd_give", ADMIN_IMMUNITY, "<nazwa> <ilosc>");
register_clcmd("typ_zapisu", "typ");
msgtext = get_user_msgid("StatusText");
register_forward(FM_PlayerPreThink, "forward_FM_PlayerPreThink", 0)
set_task(0.8, "HUD",0,"",0,"b");
}
public HUD(id) {
for (new id=0; id < 32; id++) {
if (!is_user_connected(id))
continue
if(is_user_alive(id)){
new HUD[128];
format(HUD, 127,"Dragi: %i",ilosc_jbpack[id]);
if(get_cvar_num("jb_hud") == 1){
message_begin(MSG_ONE, msgtext, {0,0,0}, id);
write_byte(0);
write_string(HUD);
message_end();
return PLUGIN_CONTINUE;
}
else if(get_cvar_num("jb_hud") == 2)
{
set_hudmessage(0, 255, 0, 0.02, 0.63, 0, 0.01, 0.8, _, _, 3)
show_hudmessage(id, "%s",HUD)
}
}
}
return PLUGIN_CONTINUE;
}
/*public client_PreThink(id){
if(!is_user_alive(id)){
return PLUGIN_CONTINUE;
}
if(is_user_alive(id) && !is_user_bot(id) && get_cvar_num("jb_hud") > 0){
HUD(id);
}
return PLUGIN_HANDLED;
}*/
public DeathMsg()
{
new weaponname[20]
new kid = read_data(1)
new vid = read_data(2)
new flagi = get_user_flags(kid) & ADMIN_LEVEL_H
read_data(4,weaponname,31)
if(kid == vid)
{
return PLUGIN_HANDLED
}
if(get_user_team(kid) == 1)
{
if (get_user_team(kid) == 1 && get_user_team(vid) == 2 && flagi )
{
ColorChat(kid, GREEN, "[%s] ^x01 Dostales ^x04+%i Dragow (VIP)",prefix, get_cvar_num("jb_ct_vip"));
ilosc_jbpack[kid] += get_cvar_num("jb_ct_vip")
}
if(get_user_team(vid) == 2)
{
new pack_ct = get_cvar_num("jb_ct")
ilosc_jbpack[kid] += pack_ct
ColorChat(kid, GREEN, "[%s] ^x01 Dostales ^x04+%i ^x01 Dragi/ow", prefix, pack_ct);
}
else
{
new pack_tt = get_cvar_num("jb_tt")
ilosc_jbpack[kid] += pack_tt
ColorChat(kid, GREEN, "[%s] ^x01 Dostales ^x04+%i ^x01 Dragi/ow", prefix, pack_tt);
}
if(get_cvar_num("jb_zapis") == 1) {
sql_save(kid)
}
else
{
zapisz_jbpack(kid)
}
}
return PLUGIN_CONTINUE
}
////----//////
public jb_sklep(id)
{
new menu,formats[64];
formatex(formats,charsmax(formats),"\wSklep JB^n\wDragow: \r%i",ilosc_jbpack[id])
menu = menu_create(formats,"handle_jb_sklep");
if(get_user_team(id) == 1)
{
menu_additem(menu,"\wGranat oslepiajacy \r[\w7 Dragow\r]","0")
menu_additem(menu,"\wGranat wybuchajacy \r[\w12 Dragow\r]","1")
menu_additem(menu,"\wAutoBH na jedna runde \r[\w15 Dragow\r]","2")
menu_additem(menu,"\w+50 HP \r[\w10 Dragow\r]","3")
menu_additem(menu,"\wCiche Chodzenie na jedna runde \r[\w10 Dragow\r]","4")
menu_additem(menu,"\wDeagle z 1 ammo \r[\w25 Dragow\r]","5")
menu_additem(menu,"\wNiesmiertelnosc na 5sek \r[\w20 Dragow\r]","6")
menu_additem(menu,"\wSzybkosc \r[\w20 Dragow\r]","7")
menu_additem(menu,"\wZestaw granatow \r[\w25 Dragow\r]","8")
menu_additem(menu,"\wGrawitacja \r[\w15 Dragow\r]","9")
menu_additem(menu,"\wUbranie Ct na 30 sekund \r[\w30 Dragow\r]","10")
menu_additem(menu,"\wOnly HED na 20 sekund \r[\w30 Dragow\r]","11")
menu_additem(menu,"\wNiewidzialnosc na 20sek \r[\w30 Dragow\r]","12")
}
menu_setprop(menu,MPROP_EXIT,MEXIT_ALL)
menu_setprop(menu,MPROP_EXITNAME,"Wyjscie")
menu_setprop(menu,MPROP_NEXTNAME,"Dalej")
menu_setprop(menu,MPROP_BACKNAME,"Wroc")
menu_display(id,menu,0)
return PLUGIN_HANDLED
}
public handle_jb_sklep(id, menu, item)
{
switch(item)
{
case 0:
{
if(!sprawdz(id,7)) return PLUGIN_HANDLED;
give_item(id, "weapon_flashbang");
ColorChat(id, GREEN, "[%s] Kupiles granat oslepiajacy", prefix);
}
case 1:
{
if(!sprawdz(id,12)) return PLUGIN_HANDLED;
give_item(id, "weapon_hegrenade");
ColorChat(id, GREEN, "[%s] Kupiles granat wybuchowy", prefix);
}
/*case 4:
{
if(!sprawdz(id,15)) return PLUGIN_HANDLED;
give_item(id, "weapon_deagle")
new weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
if(weapon_id)
{
cs_set_weapon_ammo(weapon_id, 1);
cs_set_weapon_bpammo(weapon_id, 0);
}
ColorChat(id, GREEN, "[%s] Kupiles glocka", prefix);
}*/
case 2:
{
if(!sprawdz(id,15)) return PLUGIN_HANDLED;
bhop_enabled[id] = true
ColorChat(id, GREEN, "[%s] Kupiles AutoBH na jedna runde", prefix);
}
case 3:
{
if(!sprawdz(id,10)) return PLUGIN_HANDLED;
set_user_health(id, get_user_health(id) + 50)
ColorChat(id, GREEN, "[%s] Kupiles +50hp", prefix);
}
case 4:
{
if(!sprawdz(id,10)) return PLUGIN_HANDLED;
set_user_footsteps(id, 1)
ColorChat(id, GREEN, "[%s] Kupiles ciche chodzenie na jedna runde", prefix);
}
case 5:
{
if(!sprawdz(id,25)) return PLUGIN_HANDLED;
give_item(id, "weapon_deagle");
give_item(id, "ammo_50ae");
new weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
if(weapon_id)
{
cs_set_weapon_ammo(weapon_id, 1);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
}
ColorChat(id, GREEN, "[%s] Kupiles deagle z 1 ammo", prefix);
}
case 6:
{
if(!sprawdz(id,20)) return PLUGIN_HANDLED;
set_user_godmode(id, 1)
set_task(5.0, "godoff", id)
ColorChat(id, GREEN, "[%s] Kupiles niesmiertelnosc na 5 sekund", prefix);
}
case 7:
{
if(!sprawdz(id,20)) return PLUGIN_HANDLED;
speed[id] = 1;
set_user_maxspeed(id, 400.0);
ColorChat(id, GREEN, "[%s] Kupiles szybkosc", prefix);
}
case 8:
{
if(!sprawdz(id,25)) return PLUGIN_HANDLED;
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
cs_set_user_bpammo(id, CSW_FLASHBANG,2);
give_item(id, "weapon_smokegrenade");
ColorChat(id, GREEN, "[%s] Kupiles zestaw granatow", prefix);
}
case 9:
{
if(!sprawdz(id,15)) return PLUGIN_HANDLED;
set_user_gravity(id, 0.5);
ColorChat(id, GREEN, "[%s] Kupiles mniejsza grawitacje", prefix);
}
case 10:
{
if(!sprawdz(id,30)) return PLUGIN_HANDLED;
ZmienUbranie(id, 0);
set_task(30.0, "ubranie", id);
ColorChat(id, GREEN, "[%s] Kupiles ubranie CT na 30 sekund", prefix);
}
case 11:
{
if(!sprawdz(id,30)) return PLUGIN_HANDLED;
set_user_hitzones (0, id, 2);
set_task(20.0, "hit", id);
ColorChat(id, GREEN, "[%s] Kupiles only hed na 20 sekund", prefix);
}
case 12:
{
if(!sprawdz(id,30)) return PLUGIN_HANDLED;
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 10);
set_task(20.0, "kRenderTransAlphaoff", id);
ColorChat(id, GREEN, "[%s] Kupiles niewidzialnosc na 20 sekund", prefix);
}
}
return PLUGIN_CONTINUE;
}
public sprawdz(id,jbpack){
if (ilosc_jbpack[id] >= jbpack){
ilosc_jbpack[id] -= jbpack
return true;
}
if(!is_user_alive(id)){
ColorChat(id, GREEN, "[%s] Nie zyjesz", prefix);
return false;
}
if(ilosc_jbpack[id] < jbpack)
{
ColorChat(id, GREEN, "[%s] Nie masz tylu Dragow, aby to kupic", prefix);
return false;
}
return PLUGIN_CONTINUE;
}
public Koniec_Rundy(){
for(new i =1;i<33;i++){
if(is_user_connected(i))
{
bhop_enabled[i] = false
set_user_footsteps(i, 0)
}
}
}
public forward_FM_PlayerPreThink(id)
{
if(bhop_enabled[id] == true)
{
entity_set_float(id, EV_FL_fuser2, 0.0)
if (entity_get_int(id, EV_INT_button) & 2)
{
new flags = entity_get_int(id, EV_INT_flags)
if (flags & FL_WATERJUMP)
return PLUGIN_CONTINUE
if ( entity_get_int(id, EV_INT_waterlevel) >= 2 )
return PLUGIN_CONTINUE
if ( !(flags & FL_ONGROUND) )
return PLUGIN_CONTINUE
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
velocity[2] += 250.0
entity_set_vector(id, EV_VEC_velocity, velocity)
entity_set_int(id, EV_INT_gaitsequence, 6)
}
}
return PLUGIN_CONTINUE
}
public cmd_give(id, level, cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_CONTINUE;
new arg[33];
read_argv(1, arg, 32);
new target = cmd_target(id, arg, CMDTARGET_ALLOW_SELF);
if(!is_user_connected(target))
return PLUGIN_CONTINUE;
read_argv(2, arg, 32);
new ilejb = str_to_num(arg);
ilosc_jbpack[target] = ilosc_jbpack[target] + ilejb;
return PLUGIN_CONTINUE;
}
public plugin_natives()
{
register_native("get_user_jbpack","return_jbpack", 1)
register_native("set_user_jbpack","set_jbpack", 1)
}
public return_jbpack(id)
{
return ilosc_jbpack[id];
}
public set_jbpack(id, amount)
{
ilosc_jbpack[id] = amount
}
//////////////
public typ(id) {
if(get_cvar_num("jb_zapis") == 1) {
client_print(id, print_console, "Uzywasz obecnie zapisu SQL")
}
else
{
client_print(id, print_console, "Uzywasz obecnie zapisu nVault")
}
}
public zaladuj_jbpack(id)
{
new name[48]
get_user_name(id,name,47)
new vaultkey[64],vaultdata[128]
formatex(vaultkey,63,"%s-jbpack",name)
if(nvault_get(jb_packi_nv,vaultkey,vaultdata,127)) {
new jb_packii[16];
parse(vaultdata, jb_packii, 15)
ilosc_jbpack[id]=str_to_num(jb_packii)
}
return PLUGIN_CONTINUE
}
public zapisz_jbpack(id) {
new name[48]
get_user_name(id,name,47)
new vaultkey[64],vaultdata[128]
formatex(vaultkey,63,"%s-jbpack",name)
formatex(vaultdata,127,"%d", ilosc_jbpack[id])
nvault_set(jb_packi_nv,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public plugin_cfg(){
SQLenabled = false;
sql_init();
}
public plugin_end()
{
if ( SQLenabled )
{
SQL_FreeHandle(g_SqlTuple);
}
}
public Message_Intermission()
{
gIntermission = true;
}
public client_putinserver(id){
gTablesLoaded[id] = 0;
if(get_cvar_num("jb_zapis") == 1) {
get_save_key(id);
}
else
{
zaladuj_jbpack(id);
}
}
public client_disconnect(id)
{
if(get_cvar_num("jb_zapis") == 1) {
sql_save(id)
}
else
{
zapisz_jbpack(id)
}
}
public sql_init()
{
new szHost[32], szUser[32], szPass[32], szDB[32];
get_pcvar_string(pPcvarDBHost, szHost, 31);
get_pcvar_string(pPcvarDBUser, szUser, 31);
get_pcvar_string(pPcvarDBPassword, szPass, 31);
get_pcvar_string(pPcvarDBBase, szDB, 31);
g_SqlTuple = SQL_MakeDbTuple(szHost, szUser, szPass, szDB);
SQL_ThreadQuery(g_SqlTuple, "TableHandle", "CREATE TABLE IF NOT EXISTS jbpacki (nazwa_gracza VARCHAR(35), ilosc_jbpack INT(11), PRIMARY KEY (nazwa_gracza))");
}
public get_save_key(id)
{
get_user_name(id, gSaveKey[id], charsmax(gSaveKey[]));
sql_load(id);
}
public sql_load(id)
{
new index[1];
index[0] = id;
new tempSaveKey[63];
copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );
formatex(g_Cache, charsmax(g_Cache), "SELECT ilosc_jbpack FROM jbpacki WHERE nazwa_gracza='%s'", tempSaveKey);
SQL_ThreadQuery(g_SqlTuple, "SelectHandle", g_Cache, index, 1);
}
public TableHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
if ( FailState )
{
if ( FailState == TQUERY_CONNECT_FAILED )
{
log_amx("Table - Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if ( FailState == TQUERY_QUERY_FAILED )
{
log_amx("Table Query failed. [%d] %s", Errcode, Error);
}
SQLenabled = false;
return;
}
SQLenabled = true;
}
public QueryHandle(FailState, Handle:Query, Error[], Errcode,Data[], DataSize)
{
if ( FailState )
{
if ( FailState == TQUERY_CONNECT_FAILED )
{
log_amx("Save - Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if ( FailState == TQUERY_QUERY_FAILED )
{
log_amx("Save Query failed. [%d] %s", Errcode, Error);
}
return;
}
}
public SelectHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
if ( FailState )
{
if ( FailState == TQUERY_CONNECT_FAILED )
{
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if ( FailState == TQUERY_QUERY_FAILED )
{
log_amx("Load Query failed. [%d] %s", Errcode, Error);
}
return;
}
new id = Data[0];
if ( !SQL_NumResults(Query) )
{
new tempSaveKey[63];
copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );
formatex(g_Cache, charsmax(g_Cache), "INSERT INTO jbpacki VALUES('%s', '0')", tempSaveKey);
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache);
}
else
{
ilosc_jbpack[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"ilosc_jbpack"));
}
gTablesLoaded[id]++;
}
public sql_save(id)
{
if ( gTablesLoaded[id] == 1 )
{
if ( gIntermission )
{
sql_save_nonthreaded(id);
return;
}
new tempSaveKey[63];
copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );
formatex(g_Cache, charsmax(g_Cache), "UPDATE jbpacki SET ilosc_jbpack=%i WHERE nazwa_gracza=^"%s^"", ilosc_jbpack[id], tempSaveKey);
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache);
}
}
sql_save_nonthreaded(id)
{
new Errcode, Error[128], Handle:SqlConnection;
SqlConnection = SQL_Connect(g_SqlTuple, Errcode, Error, charsmax(Error));
if ( !SqlConnection )
{
log_amx("Save - Could not connect to SQL database. [%d] %s", Errcode, Error);
SQL_FreeHandle(SqlConnection);
return;
}
new tempSaveKey[63];
copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );
new Handle:Query;
Query = SQL_PrepareQuery(SqlConnection, "UPDATE jbpacki SET ilosc_jbpack=%i WHERE nazwa_gracza=^"%s^"", ilosc_jbpack[id], tempSaveKey);
if ( !SQL_Execute(Query) )
{
Errcode = SQL_QueryError(Query, Error, charsmax(Error));
log_amx("Save Query failed. [%d] %s", Errcode, Error);
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
return;
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
}
public godoff(id)
{
set_user_godmode(id, 0);
}
public ZmienUbranie(id,reset)
{
if (!is_user_connected(id))
return PLUGIN_CONTINUE;
if (reset)
cs_reset_user_model(id);
else
{
new num = random_num(0,3);
cs_set_user_model(id, (get_user_team(id) == 1)? CT_Skins[num]: Terro_Skins[num]);
}
return PLUGIN_CONTINUE;
}
public ubranie(id)
{
ZmienUbranie(id, 1);
}
public hit(id)
{
set_user_hitzones (0, id, 255)
}
public kRenderTransAlphaoff(id)
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
}