Witam mam problem bo nie moge to skomplikować czy ktoś pomoze podaj to na dole
to bedzie pierwsze
#include <amxmodx>
#include <amxmisc
#include <sqlx>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <engine>
#include <fakemeta_util>
#include <nvault>
#include <jailbreak>
#define VIP ADMIN_LEVEL_H
#define SVIP ADMIN_LEVEL_G
#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)
native get_user_jbpack(id)
native set_user_jbpack(id, amount)
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 g_iMsgStatusText;
new g_iZyczeniaGracza[33];
new g_iBuntyGracza[33];
new target;
new konto[20]
new name[33]
new ilosc_jbpack[33];
new bool:bhop_enabled[33];
new bool:blokada
new longjump[33];
new id;
new g_Mission[33], g_Bonus[33]
new ranga[33];
new const rangi[][] = {
{10, "1"}, // Poziom 1 (10 zabojstw)
{20, "2"}, // Poziom 2 (20 zabojstw)
{30, "3"}, // Poziom 3 (30 zabojstw)
{40, "4"}, // Poziom 4 (40 zabojstw)
{50, "5"}, // Poziom 5 (50 zabojstw)
{60, "6"}, // Poziom 6 (60 zabojstw)
{70, "7"}, // Poziom 7 (70 zabojstw)
{80, "8"}, // Poziom 8 (80 zabojstw)
{90, "9"}, // Poziom 9 (90 zabojstw)
{100, "10"}, // Poziom 10 (100 zabojstw)
{110, "11"}, // Poziom 11 (110 zabojstw)
{120, "12"}, // Poziom 12 (120 zabojstw)
{130, "13"}, // Poziom 13 (130 zabojstw)
{150, "14"}, // Poziom 14 (140 zabojstw)
{150, "15"}, // Poziom 15 (150 zabojstw)
{160, "16"}, // Poziom 16 (160 zabojstw)
{170, "17"}, // Poziom 17 (170 zabojstw)
{180, "18"}, // Poziom 18 (180 zabojstw)
{190, "19"}, // Poziom 19 (190 zabojstw)
{200, "20"}, // Poziom 20 (200 zabojstw)
{220, "21"}, // Poziom 21 (220 zabojstw)
{240, "22"}, // Poziom 22 (240 zabojstw)
{260, "23"}, // Poziom 23 (260 zabojstw)
{280, "24"}, // Poziom 24 (280 zabojstw)
{290, "25"}, // Poziom 25 (290 zabojstw)
{300, "26"}, // Poziom 26 (300 zabojstw)
{310, "27"}, // Poziom 27 (310 zabojstw)
{320, "28"}, // Poziom 28 (320 zabojstw)
{330, "29"}, // Poziom 29 (330 zabojstw)
{340, "30"}, // Poziom 30 (340 zabojstw)
{350, "31"}, // Poziom 31 (350 zabojstw)
{360, "32"}, // Poziom 32 (360 zabojstw)
{370, "33"}, // Poziom 33 (370 zabojstw)
{380, "34"}, // Poziom 34 (380 zabojstw)
{390, "35"}, // Poziom 35 (390 zabojstw)
{400, "36"} // Poziom 36 (400 zabojstw)
}
new jb_packi_nv
new msgtext;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
pPcvarDBHost = register_cvar("db_host", "145.239.236.240"); //ip bazy danych
pPcvarDBUser = register_cvar("db_user", "srv71572"); //nazwa uzytkownika
pPcvarDBPassword = register_cvar("db_pass", "6rv8oGdyeh"); //haslo do bazy danych
pPcvarDBBase = register_cvar("db_database", "srv71572"); //nazwa bazy danych
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
register_clcmd("jail_sklep_dolce", "jb_sklep")
register_clcmd("jail_sklep_dolce", "jb_sklep")
register_clcmd("jail_sklep_dolce", "jb_sklep")
register_cvar("jb_maxjp", "1000000" );
register_cvar("jb_tt", "25" );
register_cvar("jb_ct", "30" );
register_cvar("jb_hs", "45" );
register_cvar("jb_czas", "60");
register_cvar("jb_zapis", "2"); //1 - nvault, 2 - sql
register_cvar("jb_hud", "2"); //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 plugin_precache(){
precache_sound("jbe_tops/shop/welcome.wav")
precache_sound("jbe_tops/shop/1.mp3")
precache_sound("jbe_tops/shop/2.mp3")
precache_sound("jbe_tops/shop/3.mp3")
precache_sound("jbe_tops/shop/4.mp3")
precache_sound("jbe_tops/shop/6.mp3")
precache_sound("jbe_tops/shop/7.mp3")
precache_sound("jbe_tops/shop/8.mp3")
precache_sound("jbe_tops/shop/9.mp3")
precache_sound("jbe_tops/shop/10.mp3")
precache_sound("jbe_tops/shop/11.mp3")
precache_sound("jbe_tops/shop/12.mp3")
}
public HUD(id) {
for (new id=0; id < 32; id++) {
if (!is_user_connected(id))
continue
else if(get_user_flags(target) & VIP)
konto = "Kupiona"
if(get_user_flags(target) & SVIP)
konto = "Kupiona"
else
konto = "Darmowa"
if(rangi[ranga[id]][0] && ranga[id])
ranga[id]++
if(ranga[id])
ranga[id]--
if(is_user_alive(id)){
new HUD[128];
get_user_name(id,name,32)
new Time[9]
get_time("%H:%M:%S",Time,8)
new nextmap[32]
get_cvar_string("amx_nextmap",nextmap,31)
new timeleft = get_timeleft()
format(HUD, 127,"Szlugi: [%i] **^nGodzina: [%s] **^nEXP: [%s] **^nMisja: [%d] **^nBudynie: [%d] **^nZyczenia: [%d] **", ilosc_jbpack[id], Time, get_user_flags(id) & ADMIN_LEVEL_G ? "Tak" : "Nie", g_Mission[id], g_iBuntyGracza[id], g_iZyczeniaGracza[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(200, 0, 200, 0.95, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1)
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 headshot = read_data(3)
read_data(4,weaponname,31)
if(kid == vid)
{
return PLUGIN_HANDLED
}
if(get_user_team(kid) == 1)
{
new maxjp = get_cvar_num("jb_maxjp")
if(ilosc_jbpack[kid]<maxjp)
{
if(get_user_team(vid) == 2)
{
new pack_ct = get_cvar_num("jb_ct")
ilosc_jbpack[kid] += pack_ct
set_dhudmessage(244, 130, 0, -1.0, 0.45, 0, 0.01, 0.8, _, _, 3)
show_dhudmessage(id, "", pack_ct)
}
else
{
new pack_tt = get_cvar_num("jb_tt")
ilosc_jbpack[kid] += pack_tt
set_dhudmessage(244, 130, 0, -1.0, 0.45, 0, 0.01, 0.8, _, _, 3)
show_dhudmessage(id, "", pack_tt)
}
if(headshot)
{
new pack_hs = get_cvar_num("jb_hs")
ilosc_jbpack[kid] += pack_hs
set_dhudmessage(244, 130, 0, -1.0, 0.45, 0, 0.01, 0.8, _, _, 3)
show_dhudmessage(id, "", pack_hs)
}
}
else
{
set_dhudmessage(244, 130, 0, 1.0, 0.01, 0, 0.01, 0.8, _, _, 3)
show_dhudmessage(id, "")
return PLUGIN_CONTINUE
}
ColorChat(kid, GREEN, "", prefix, ilosc_jbpack[kid], maxjp);
if(get_cvar_num("jb_zapis") == 1) {
sql_save(kid)
}
else
{
zapisz_jbpack(kid)
}
}
return PLUGIN_CONTINUE
}
////----//////
public jb_sklep(id)
{
if(blokada == true){
new czynny_sklep = get_cvar_num("jb_czas")
ColorChat(id, GREEN, "[Sklep]^x01 Czynny przez %d sekund!", czynny_sklep);
return PLUGIN_HANDLED
}
new menu,formats[64];
formatex(formats,charsmax(formats),"\wSklep wiezienny^n\dPosiadasz: \r%i \dszlugów\r",ilosc_jbpack[id])
menu = menu_create(formats,"handle_jb_sklep");
if(get_user_team(id) == 1)
client_cmd(id, "spk sound/jbe_tops/shop/welcome.wav");
{
menu_additem(menu,"\wGranat dymiący \r[\y150 szlugów\r]","0")
menu_additem(menu,"\wGranat oślepiający \r[\y180 szlugów\r]","1")
menu_additem(menu,"\wGranat wybuchający \r[\y200 szlugów\r]","2")
menu_additem(menu,"\r+50 \wkamizelki \d[na rundę] \r[\y150 szlugów\r]","3")
menu_additem(menu,"\r+100 \wkamizelki \d[na rundę] \r[\y250 szlugów\r]","4")
menu_additem(menu,"\r+50 \wzdrowia \d[na rundę] \r[\y170 szlugów\r]","5")
menu_additem(menu,"\r+100 \wzdrowia \d[na rundę] \r[\y270 szlugów\r]","6")
menu_additem(menu,"\wAutoBH \d[na rundę] \r[\y750 szlugów\r]","7")
menu_additem(menu,"\wButy bezszelestu \d[na rundę] \r[\y250 szlugów\r]","8")
menu_additem(menu,"\wButy szybkości \d[na rundę] \r[\y300 szlugów\r]","9")
menu_additem(menu,"\rDuszek \d[następny dzień] \r[\y800 szlugów\r]","10")
menu_additem(menu,"\rFreeDay \d[następny dzień] \r[\y800 szlugów\r]","11")
}
menu_setprop(menu,MPROP_EXIT,MEXIT_ALL)
menu_setprop(menu,MPROP_BACKNAME,"Poprzednia Strona")
menu_setprop(menu,MPROP_NEXTNAME,"Nastepna Strona")
menu_setprop(menu,MPROP_EXITNAME,"Wyjdź")
menu_display(id,menu,0)
return PLUGIN_HANDLED
}
public handle_jb_sklep(id, menu, item)
{
switch(item)
{
case 0:
{
if(!sprawdz(id,150)) return PLUGIN_HANDLED;
give_item(id, "weapon_smokegrenade");
client_cmd(id, "mp3 play sound/jbe_tops/shop/1.mp3");
ColorChat(id, GREEN, "[Sklep]x01 Kupilesx03 Granat Dymiacyx01!");
}
case 1:
{
if(!sprawdz(id,180)) return PLUGIN_HANDLED;
give_item(id, "weapon_flashbang");
client_cmd(id, "mp3 play sound/jbe_tops/shop/2.mp3");
ColorChat(id, GREEN, "[Sklep]x01 Kupiles^x03 Granat Oslepiajacy^x01!");
}
case 2:
{
if(!sprawdz(id,200)) return PLUGIN_HANDLED;
give_item(id, "weapon_hegrenade");
client_cmd(id, "mp3 play sound/jbe_tops/shop/3.mp3");
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 Granat Wybuchajacy^x01!");
}
case 3:
{
if(!sprawdz(id,150)) return PLUGIN_HANDLED;
set_user_armor(id, get_user_armor(id) + 50)
client_cmd(id, "mp3 play sound/jbe_tops/shop/4.mp3");
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 +50 kamizelki^x01!");
}
case 4:
{
if(!sprawdz(id,250)) return PLUGIN_HANDLED;
set_user_armor(id, get_user_armor(id) + 100)
client_cmd(id, "mp3 play sound/jbe_tops/shop/5.mp3");
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 +100 kamizelki^x01!");
}
case 5:
{
if(!sprawdz(id,170)) return PLUGIN_HANDLED;
set_user_health(id, get_user_health(id) + 50)
client_cmd(id, "mp3 play sound/jbe_tops/shop/6.mp3");
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 +50 zdrowia^x01!");
}
case 6:
{
if(!sprawdz(id,270)) return PLUGIN_HANDLED;
set_user_health(id, get_user_health(id) + 100)
client_cmd(id, "mp3 play sound/jbe_tops/shop/7.mp3");
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 +100 zdrowia^x01!");
}
/*case 4:
{
if(!sprawdz(id,10)) return PLUGIN_HANDLED;
give_item(id, "weapon_glock18")
new weapon_id = find_ent_by_owner(-1, "weapon_glock18", id);
if(weapon_id)
{
cs_set_weapon_ammo(weapon_id, 4);
}
ColorChat(id, GREEN, "[%s] Kupiles glocka", prefix);
}*/
case 7:
{
if(!sprawdz(id,750)) return PLUGIN_HANDLED;
bhop_enabled[id] = true
client_cmd(id, "mp3 play sound/jbe_tops/shop/8.mp3");
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 AutoBH^x01!");
ColorChat(id, GREEN, "[MOC]^x01 Trzymaj^x03 spacje^x01 i skacz bez przerwy!");
}
case 8:
{
if(!sprawdz(id,250)) return PLUGIN_HANDLED;
set_user_footsteps(id, 1)
client_cmd(id, "mp3 play sound/jbe_tops/shop/9.mp3");
ColorChat(id, GREEN, "[Sklep]x01 Kupiles^x03 Buty Bezszelestu^x01!");
}
case 9:
{
if(!sprawdz(id,300)) return PLUGIN_HANDLED;
set_user_maxspeed(id, 2450.0);
client_cmd(id, "mp3 play sound/jbe_tops/shop/10.mp3");
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 Buty Szybkosci^x01!");
ColorChat(id, GREEN, "[BUTY]^x01 Twoja kondycja wzrasta do^x03 +5,20% predkosci^x01!");
}
case 10:
{
if(!sprawdz(id,800)) return PLUGIN_HANDLED;
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 Duszka na jutro^x01!");
client_cmd(id, "mp3 play sound/jbe_tops/shop/11.mp3");
jail_set_prisoner_ghost(id, false, true);
}
case 11:
{
if(!sprawdz(id,800)) return PLUGIN_HANDLED;
ColorChat(id, GREEN, "[Sklep]^x01 Kupiles^x03 FreeDay'a na jutro^x01!");
client_cmd(id, "mp3 play sound/jbe_tops/shop/12.mp3");
jail_set_prisoner_free(id, false, true);
}
}
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, "[Sklep]^x01 Nie mozesz korzystac ze sklepu!");
return false;
}
if(ilosc_jbpack[id] < jbpack)
{
ColorChat(id, GREEN, "[Sklep]^x01 Nie masz wystarczajaco szlugów na kupno!");
return false;
}
return PLUGIN_CONTINUE;
}
public Poczatek_Rundy() {
blokada = false
new czynny_skle = get_cvar_float("jb_czas")
set_task(czynny_skle, "Blokuj")
}
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 Blokuj(){
blokada = true
}
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);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
stock __dhud_color;
stock __dhud_x;
stock __dhud_y;
stock __dhud_effect;
stock __dhud_fxtime;
stock __dhud_holdtime;
stock __dhud_fadeintime;
stock __dhud_fadeouttime;
stock __dhud_reliable;
stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
{
#define clamp_byte(%1) ( clamp( %1, 0, 255 ) )
#define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )
__dhud_color = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
__dhud_x = _;
__dhud_y = _:y;
__dhud_effect = effects;
__dhud_fxtime = _:fxtime;
__dhud_holdtime = _:holdtime;
__dhud_fadeintime = _:fadeintime;
__dhud_fadeouttime = _:fadeouttime;
__dhud_reliable = _:reliable;
return 1;
}
stock show_dhudmessage( index, const message[], any:... )
{
new buffer[ 128 ];
new numArguments = numargs();
if( numArguments == 2 )
{
send_dhudMessage( index, message );
}
else if( index || numArguments == 3 )
{
vformat( buffer, charsmax( buffer ), message, 3 );
send_dhudMessage( index, buffer );
}
else
{
new playersList[ 32 ], numPlayers;
get_players( playersList, numPlayers, "ch" );
if( !numPlayers )
{
return 0;
}
new Array:handleArrayML = ArrayCreate();
for( new i = 2, j; i < numArguments; i++ )
{
if( getarg( i ) == LANG_PLAYER )
{
while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
j = 0;
if( GetLangTransKey( buffer ) != TransKey_Bad )
{
ArrayPushCell( handleArrayML, i++ );
}
}
}
new size = ArraySize( handleArrayML );
if( !size )
{
vformat( buffer, charsmax( buffer ), message, 3 );
send_dhudMessage( index, buffer );
}
else
{
for( new i = 0, j; i < numPlayers; i++ )
{
index = playersList[ i ];
for( j = 0; j < size; j++ )
{
setarg( ArrayGetCell( handleArrayML, j ), 0, index );
}
vformat( buffer, charsmax( buffer ), message, 3 );
send_dhudMessage( index, buffer );
}
}
ArrayDestroy( handleArrayML );
}
return 1;
}
stock send_dhudMessage( const index, const message[] )
{
message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
{
write_byte( strlen( message ) + 31 );
write_byte( DRC_CMD_MESSAGE );
write_byte( __dhud_effect );
write_long( __dhud_color );
write_long( __dhud_x );
write_long( __dhud_y );
write_long( __dhud_fadeintime );
write_long( __dhud_fadeouttime );
write_long( __dhud_holdtime );
write_long( __dhud_fxtime );
write_string( message );
}
message_end();
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
a tu drugie
#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
#include <fun>
#define VERSION "1.0"
#define TAG "^x04[MISJE]^x01"
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#include <dhudmessage>
#else
#define DontChange print_team_default
#define Blue print_team_blue
#define Red print_team_red
#define Grey print_team_grey
#endif
enum
{
VAMPIRE = 1,
MONEY,
HEALTH,
SCOUT
}
enum
{
DOUBLE_WEAPON,
DOUBLE_GRENADE,
KNIFE,
M249,
NODMG,
HOSTAGE,
MOSTDMG,
FRAGS,
DMG_DGL,
DMG_AK47,
DMG_M4A1,
DMG_FAMAS,
DEFUSED,
NODEATH,
HEADSHOT,
KNIFEKILL
}
enum _:eType
{
_DMG,
_HOSTAGE,
_MOSTDMG,
_FRAGS,
_WEAPONDMG,
_DEFUSED,
_NODEATH
}
new g_eData[33][eType]
new const g_iMission[][][] =
{
{
"Zadanie 1 \r(\y+40 szlugow \dx4\r)",
"Zadanie 2 \r(\y+80 szlugow \dx3\r)",
"Zadanie 3 \r(\y+150 szlugow \dx4\r)",
"Zadanie 4 \r(\y+200 szlugow \dx3\r)"
},
{
"Zabij 2 wrogow 1 strzalem",
"Zabij 2 wrogow granatem",
"Zabij 2 przeciwnikow nozem \r(\y1 runda\r)",
"Zabij 4 wrogow AK47 \r(\y1 runda\r)"
},
{
"Nie trac zdrowia \r(\y1 runda\r)",
"?????? ???? (4) ?????????? (?????)",
"Zadaj najwieksze obrazenia",
"Zdobadz 7 fragow \r(\y1 runda\r)"
},
{
"Zadaj 400 DMG z deagle \r(\y1 runda\r)",
"Zadaj 700 DMG z ak47 \r(\y1 runda\r)",
"Zadaj 650 DMG z m4a1 \r(\y1 runda\r)",
"Zadaj 600 DMG z famasa \r(\y1 runda\r)"
},
{
"??????????? 3 ??? ????? (?????)",
"Zdobadz/Daj zyczenie 3 razy z rzedu",
"Traf 6 kulek w glowe \r(\y1 runda\r)",
"Zabij 4 razy nozem \r(\y1 runda\r)"
}
}
new Handle:g_hSQLTuple, g_szQuery[2048]
new pCvarSqlHost, pCvarSqlUser, pCvarSqlPwd, pCvarSqlDb
new pCvarHudColor[3], pCvarHudCoord[2], pCvarMinPlayers
new pCvarBonusMoney, pCvarBonusMoneyMax, pCvarBonusHealth, pCvarBonusHealthMax
new pCvarScoutSpd, pCvarMenu
new g_CacheHudColor[3], Float:g_CacheHudCoord[2]
new g_ShowMenu[33]
new g_Mission[33], g_Bonus[33]
new g_iMaxPlayers
new g_LbzEnable, g_BlockMap
new g_Map[128][32], g_MapNum
public plugin_init()
{
register_plugin("LBZ", VERSION, "ill")
register_clcmd("say /misje", "ClcShowMenu")
register_menu("Lbz Menu", 1023, "lbz_menu")
register_logevent("event_Hostage", 3, "2=Rescued_A_Hostage")
register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
register_logevent("logevent_RoundEnd", 2, "1=Round_End")
register_event("TextMsg", "event_RestartGame", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")
RegisterHam(Ham_Killed, "player", "fw_HamKilled")
RegisterHam(Ham_Spawn, "player", "fw_HamSpawnPost", 1)
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_scout", "fw_PrimaryAttack_Post", 1)
pCvarSqlHost = register_cvar("lbz_sgl_host", "145.239.236.240")
pCvarSqlUser = register_cvar("lbz_sgl_user", "srv71572")
pCvarSqlPwd = register_cvar("lbz_sgl_pwd", "6rv8oGdyeh")
pCvarSqlDb = register_cvar("lbz_sgl_db", "srv71572")
pCvarHudColor[0] = register_cvar("lbz_hud_color_r", "0")
pCvarHudColor[1] = register_cvar("lbz_hud_color_g", "155")
pCvarHudColor[2] = register_cvar("lbz_hud_color_b", "255")
pCvarHudCoord[0] = register_cvar("lbz_hud_pos_x", "0.95")
pCvarHudCoord[1] = register_cvar("lbz_hud_pos_y", "0.75")
pCvarMinPlayers = register_cvar("lbz_min_players", "0")
pCvarBonusMoney = register_cvar("lbz_bonus_money", "700")
pCvarBonusMoneyMax = register_cvar("lbz_bonus_money_max", "16000")
pCvarMenu = register_cvar("lbz_menu", "1")
g_iMaxPlayers = get_maxplayers()
set_task(0.1, "SQL_Init_Connect")
set_task(0.5, "Cache_Cvars")
check_block_maps()
}
public plugin_precache()
{
new iConfigsDir[64]
get_configsdir(iConfigsDir, charsmax(iConfigsDir))
server_cmd("exec %s/lbz.cfg", iConfigsDir)
new iMapList[128], i, iLen
formatex(iMapList, charsmax(iMapList), "%s/lbz_blockmaps.ini", iConfigsDir)
if(file_exists(iMapList))
{
i = 0
iLen = 0
while(i < 128 && read_file(iMapList, i, g_Map[g_MapNum], charsmax(g_Map), iLen))
{
i++
if(g_Map[g_MapNum][0] == ';' || !iLen) continue
g_MapNum++
}
}
else write_file(iMapList, "; Block maps")
}
public client_putinserver(id)
{
for(new i = 0; i < eType; i++)
{
g_eData[id][i] = 0
}
g_Mission[id] = 0
g_Bonus[id] = 0
new authid[32]
get_user_authid(id, authid, charsmax(authid))
formatex(g_szQuery, charsmax(g_szQuery), "SELECT `MISSION` , `BONUS` FROM `lbz_users` WHERE `AUTHID` = '%s'", authid)
new cData[1]
cData[0] = id
SQL_ThreadQuery(g_hSQLTuple, "LoadData_QueryHandler", g_szQuery, cData, 1)
}
public LoadData_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, cData[], iSize, Float:fQueueTime)
{
if(iFailState != TQUERY_SUCCESS)
{
log_amx("LoadData_QueryHandler(): SQL Error #%d - %s", iErrnum, szError)
return
}
new id = cData[0]
if(!is_user_connected(id))
{
return
}
if(SQL_NumResults(hQuery))
{
g_Mission[id] = SQL_ReadResult(hQuery, 0)
g_Bonus[id] = SQL_ReadResult(hQuery, 1)
}
set_task(1.0, "Show_Hud", id, _, _, "b")
}
public bomb_defused(defuser)
{
if(!g_LbzEnable || g_BlockMap) return
if(g_Mission[defuser] == DEFUSED)
{
g_eData[defuser][_DEFUSED]++
if(g_eData[defuser][_DEFUSED] == 3)
{
mission_complite(defuser)
}
}
}
public event_RoundStart()
{
get_game_players() < get_pcvar_num(pCvarMinPlayers) ? (g_LbzEnable = false) : (g_LbzEnable = true)
if(g_BlockMap)
{
ColorChat(0, RED, "%s Na tej mapie misje sa wylaczone!", TAG)
}
else if(!g_LbzEnable)
{
ColorChat(0, RED, "%s Na mapie jest mniej niz^x03 %d^x01 graczy, misje sa nie uznawane!", TAG, get_pcvar_num(pCvarMinPlayers))
}
for(new id = 1; id <= g_iMaxPlayers; id++)
{
g_eData[id][_DMG] = 0
g_eData[id][_HOSTAGE] = 0
g_eData[id][_MOSTDMG] = 0
g_eData[id][_FRAGS] = 0
g_eData[id][_HOSTAGE] = 0
g_eData[id][_WEAPONDMG] = 0
}
}
public event_RestartGame()
{
for(new id = 1; id <= g_iMaxPlayers; id++)
{
g_eData[id][_NODEATH] = 0
}
}
public logevent_RoundEnd()
{
if(!g_LbzEnable || g_BlockMap)
{
return
}
static iBest, id
iBest = 0
for(id = 1; id <= g_iMaxPlayers; id++)
{
if(is_user_connected(id))
{
switch(g_Mission[id])
{
case NODMG:
{
if(!g_eData[id][_DMG])
{
mission_complite(id)
}
}
case NODEATH:
{
if(is_user_alive(id))
{
g_eData[id][_NODEATH]++
if(g_eData[id][_NODEATH] == 3)
{
mission_complite(id)
}
}
}
}
if(g_eData[id][_MOSTDMG] > g_eData[iBest][_MOSTDMG])
{
iBest = id
}
}
}
if(g_Mission[iBest] == MOSTDMG && g_eData[iBest][_MOSTDMG])
{
mission_complite(iBest)
}
}
public event_Hostage(id)
{
if(!g_LbzEnable || g_BlockMap) return
new id = get_loguser_index()
if(g_Mission[id] == HOSTAGE)
{
g_eData[id][_HOSTAGE]++
if(g_eData[id][_HOSTAGE] == 4)
{
mission_complite(id)
}
}
}
public fw_HamSpawnPost(id)
{
if(!g_LbzEnable || g_BlockMap)
return HAM_IGNORED
if(!is_user_alive(id))
{
return HAM_IGNORED
}
if(g_Bonus[id] >= HEALTH)
{
set_user_health(id, 120)
}
if(g_Bonus[id] >= SCOUT)
{
give_item(id, "weapon_hegrenade")
}
return HAM_IGNORED
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!g_LbzEnable || g_BlockMap)
return HAM_IGNORED
if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
return HAM_IGNORED
if(get_user_team(victim) == get_user_team(attacker))
return HAM_IGNORED
if(g_Mission[victim] == NODMG)
{
g_eData[victim][_DMG] += floatround(damage)
}
switch(g_Mission[attacker])
{
case DMG_DGL:
{
if(get_user_weapon(attacker) == CSW_DEAGLE)
{
g_eData[attacker][_WEAPONDMG] += floatround(damage)
if(g_eData[attacker][_WEAPONDMG] >= 400)
{
mission_complite(attacker)
g_eData[attacker][_WEAPONDMG] = 0
}
}
}
case DMG_AK47:
{
if(get_user_weapon(attacker) == CSW_AK47)
{
g_eData[attacker][_WEAPONDMG] += floatround(damage)
if(g_eData[attacker][_WEAPONDMG] >= 700)
{
mission_complite(attacker)
g_eData[attacker][_WEAPONDMG] = 0
}
}
}
case DMG_M4A1:
{
if(get_user_weapon(attacker) == CSW_M4A1)
{
g_eData[attacker][_WEAPONDMG] += floatround(damage)
if(g_eData[attacker][_WEAPONDMG] >= 650)
{
mission_complite(attacker)
g_eData[attacker][_WEAPONDMG] = 0
}
}
}
case DMG_FAMAS:
{
if(get_user_weapon(attacker) == CSW_FAMAS)
{
g_eData[attacker][_WEAPONDMG] += floatround(damage)
if(g_eData[attacker][_WEAPONDMG] >= 600)
{
mission_complite(attacker)
g_eData[attacker][_WEAPONDMG] = 0
}
}
}
}
g_eData[attacker][_MOSTDMG] += floatround(damage)
return HAM_IGNORED
}
public fw_HamKilled(victim, attacker, shouldgib)
{
if(!g_LbzEnable || g_BlockMap)
return HAM_IGNORED
if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
return HAM_IGNORED
static Float:iTime, Float:iKillTime, iKiller
iTime = get_gametime()
static iWpnName[24]
switch(g_Mission[attacker])
{
case DOUBLE_GRENADE:
{
get_killer_weapon(attacker, pev(victim, pev_dmg_inflictor), iWpnName, charsmax(iWpnName))
if(equal(iWpnName, "grenade"))
{
if (iKillTime == iTime && iKiller == attacker)
{
mission_complite(attacker)
}
iKillTime = iTime
iKiller = attacker
}
}
case DOUBLE_WEAPON:
{
if (iKillTime == iTime && iKiller == attacker)
{
mission_complite(attacker)
}
iKillTime = iTime
iKiller = attacker
}
case KNIFE:
{
if(get_user_weapon(attacker) == CSW_KNIFE)
{
g_eData[attacker][_FRAGS]++
if(g_eData[attacker][_FRAGS] == 2)
{
mission_complite(attacker)
g_eData[attacker][_FRAGS] = 0
}
}
}
case M249:
{
if(get_user_weapon(attacker) == CSW_M249)
{
g_eData[attacker][_FRAGS]++
if(g_eData[attacker][_FRAGS] == 4)
{
mission_complite(attacker)
g_eData[attacker][_FRAGS] = 0
}
}
}
case FRAGS:
{
g_eData[attacker][_FRAGS]++
if(g_eData[attacker][_FRAGS] == 7)
{
mission_complite(attacker)
g_eData[attacker][_FRAGS] = 0
}
}
case HEADSHOT:
{
static iHS
iHS = get_pdata_int(victim, 75, 5) == HIT_HEAD ? 1 : 0
if(iHS)
{
g_eData[attacker][_FRAGS]++
if(g_eData[attacker][_FRAGS] == 6)
{
mission_complite(attacker)
g_eData[attacker][_FRAGS] = 0
}
}
}
case KNIFEKILL:
{
if(get_user_weapon(attacker) == CSW_KNIFE)
{
g_eData[attacker][_FRAGS]++
if(g_eData[attacker][_FRAGS] == 4)
{
mission_complite(attacker)
g_eData[attacker][_FRAGS] = 0
}
}
}
}
// Reset
g_eData[victim][_FRAGS] = 0
g_eData[victim][_WEAPONDMG] = 0
g_eData[victim][_NODEATH] = 0
// Bonus
new iMax, iValue
if(g_Bonus[attacker] >= VAMPIRE)
{
iMax = get_pcvar_num(pCvarBonusHealthMax)
iValue = get_user_health(attacker)
if(iValue + get_pcvar_num(pCvarBonusHealth) > iMax)
{
set_user_health(attacker, iMax)
}
else
{
set_user_health(attacker, iValue + get_pcvar_num(pCvarBonusHealth))
}
}
if(g_Bonus[attacker] >= MONEY)
{
iMax = get_pcvar_num(pCvarBonusMoneyMax)
iValue = cs_get_user_money(attacker)
if(iValue + get_pcvar_num(pCvarBonusMoney) > iMax)
{
cs_set_user_money(attacker, iMax)
}
else
{
cs_set_user_money(attacker, iValue + get_pcvar_num(pCvarBonusMoney))
}
}
return HAM_IGNORED
}
public Cache_Cvars()
{
g_CacheHudColor[0] = get_pcvar_num(pCvarHudColor[0])
g_CacheHudColor[1] = get_pcvar_num(pCvarHudColor[1])
g_CacheHudColor[2] = get_pcvar_num(pCvarHudColor[2])
g_CacheHudCoord[0] = get_pcvar_float(pCvarHudCoord[0])
g_CacheHudCoord[1] = get_pcvar_float(pCvarHudCoord[1])
}
public Show_Hud(id)
{
set_hudmessage(0, 255, 0, 0.80, 0.70, 0, 0.1, 1.0, 0.05, 0.05)
show_hudmessage(id, "{ Wpisz: /misje }^n{ Misja: %d|16 }^n{ Poziom: %d|4 }", g_Mission[id], g_Bonus[id])
}
public ClcShowMenu(id)
{
if(!get_pcvar_num(pCvarMenu))
{
return PLUGIN_HANDLED
}
g_ShowMenu[id] = 0
show_lbz_menu(id)
return PLUGIN_HANDLED
}
public show_lbz_menu(id)
{
new menu[512], len, i
new keys = MENU_KEY_0
new iMenu = g_ShowMenu[id]
new iMisNum = g_Mission[id] - (g_Bonus[id] * 4)
if(iMenu)
{
len += formatex(menu[len], charsmax(menu) - len, "\y%s^n^n", g_iMission[0][iMenu-1])
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\rZa wykonanie:^n^n\dZadanie 1: 40 szlugow za kazda misje!^nZadanie 2: 80 szlugow za kazda misje!^nZadanie 3: 150 szlugow za kazda misje!^nZadanie 4: 200 szlugow za kazda misje!^n^n")
if(g_Mission[id] < 16)
len += formatex(menu[len], charsmax(menu) - len, "\rAKTUALNA: \w%s\d!^n^n", g_iMission[g_Bonus[id]+1][iMisNum])
else
len += formatex(menu[len], charsmax(menu) - len, "\rWszystkie misje zakonczone!^n^n")
keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_0
}
for(i = 0; i < 4; i++)
{
if(iMenu)
{
len += formatex(menu[len], charsmax(menu) - len, "\y%d. \w%s^n", i+1, g_iMission[iMenu][i])
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\y%d. \w%s%s^n", i+1, g_iMission[iMenu][i], g_Bonus[id] > i ? " \r(wykonane)" : "")
}
}
len += formatex(menu[len], charsmax(menu) - len, "^n\y0. \w%s^n", iMenu ? "Poprzednie menu" : "Wyjdz")
show_menu(id, keys, menu, -1, "Lbz Menu")
}
public lbz_menu(id, key)
{
switch(key)
{
case 9:
{
if(g_ShowMenu[id])
{
g_ShowMenu[id] = 0
show_lbz_menu(id)
}
}
default:
{
g_ShowMenu[id] = key+1
show_lbz_menu(id)
}
}
}
public fw_PrimaryAttack_Post(Weapon)
{
new id = get_pdata_cbase(Weapon, 41, 4)
if(pev_valid(id) != 2)
return HAM_IGNORED
if(g_Bonus[id] >= SCOUT)
{
set_pdata_float(Weapon, 46, get_pcvar_float(pCvarScoutSpd), 4)
}
return HAM_IGNORED
}
mission_complite(id)
{
new iMisNum = g_Mission[id] - (g_Bonus[id] * 4)
new szName[32]
get_user_name(id, szName, charsmax(szName))
set_dhudmessage(0, 255, 0, -1.0, -0.25, 2, 0.02, 8.0, 0.03, 0.2)
show_dhudmessage(id, "Zakonczyles misje: %s", g_iMission[g_Bonus[id]+1][iMisNum])
ColorChat(0, RED, "%s Gracz^x03 %s^x01 ukonczyl misje:^x04 %s", TAG, szName, g_iMission[g_Bonus[id]+1][iMisNum])
g_Mission[id]++
if(g_Mission[id] == 4 || g_Mission[id] == 8 || g_Mission[id] == 12 || g_Mission[id] == 16)
{
g_Bonus[id]++
}
new authid[32]
get_user_authid(id, authid, charsmax(authid))
formatex(g_szQuery, charsmax(g_szQuery),
"INSERT INTO `lbz_users` SET `AUTHID`='%s', `MISSION`='%d', `BONUS`='%d' ON DUPLICATE KEY UPDATE `MISSION`='%d', `BONUS`='%d'",
authid, g_Mission[id], g_Bonus[id], g_Mission[id], g_Bonus[id])
SQL_ThreadQuery(g_hSQLTuple, "QueryHandler", g_szQuery)
log_to_file("lbz_logs.log", "%s (%s) completed mission %d", szName, authid, g_Mission[id])
}
get_game_players()
{
static count, i
count = 0
for(i = 1; i <= g_iMaxPlayers; i++)
{
if(is_user_connected(i))
{
if(get_user_team(i) == 1 || get_user_team(i) == 2)
count++
}
}
return count
}
public SQL_Init_Connect()
{
new iHost[64], iUser[64], iPwd[64], iDB[64]
get_pcvar_string(pCvarSqlHost, iHost, charsmax(iHost))
get_pcvar_string(pCvarSqlUser, iUser, charsmax(iUser))
get_pcvar_string(pCvarSqlPwd, iPwd, charsmax(iPwd))
get_pcvar_string(pCvarSqlDb, iDB, charsmax(iDB))
SQL_SetAffinity("mysql")
g_hSQLTuple = SQL_MakeDbTuple(iHost, iUser, iPwd, iDB)
SQL_Table()
}
SQL_Table()
{
formatex(g_szQuery, charsmax(g_szQuery),"\
CREATE TABLE IF NOT EXISTS `lbz_users` (\
`AUTHID` varchar(32) NOT NULL,\
`MISSION` int(1) NOT NULL,\
`BONUS` int(1) NOT NULL,\
PRIMARY KEY (`AUTHID`))")
SQL_ThreadQuery(g_hSQLTuple, "QueryHandler", g_szQuery)
}
public QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, iData[], iSize, Float:fQueueTime)
{
if(iFailState != TQUERY_SUCCESS)
{
log_amx("QueryHandler(): SQL Error #%d - %s", iErrnum, szError)
return
}
}
public plugin_end()
{
if (g_hSQLTuple)
{
SQL_FreeHandle(g_hSQLTuple)
}
}
check_block_maps()
{
new MapName[64], i
get_mapname(MapName, charsmax(MapName))
while(i < g_MapNum)
{
if(containi(MapName, g_Map[i++]) != -1)
{
g_BlockMap = true
}
}
}
stock get_loguser_index()
{
new loguser[80], name[32]
read_logargv(0, loguser, charsmax(loguser))
parse_loguser(loguser, name, 31)
return get_user_index(name)
}
stock get_killer_weapon(killer,inflictor,retVar[],retLen) {
static killer_weapon_name[32]
killer_weapon_name = "world"
if(pev_valid(killer) && (pev(killer,pev_flags) & FL_CLIENT)) {
if(pev_valid(inflictor)) {
if(inflictor == killer) {
new weapon = get_user_weapon(killer)
get_weaponname(weapon,killer_weapon_name,31)
}
else pev(inflictor,pev_classname,killer_weapon_name,31)
}
} else {
if(pev_valid(killer)) pev(inflictor,pev_classname,killer_weapon_name,31)
else if(killer == 0) killer_weapon_name = "worldspawn"
}
if(equal(killer_weapon_name,"weapon_",7)) copy(killer_weapon_name,31,killer_weapon_name[7])
else if(equal(killer_weapon_name,"monster_",8)) copy(killer_weapon_name,31,killer_weapon_name[8])
else if(equal(killer_weapon_name,"func_",5)) copy(killer_weapon_name,31,killer_weapon_name[5])
copy(retVar,retLen,killer_weapon_name)
}