Sziasztok! Segítségeteket szeretném kérni a következő plugin javításában, mert a következő hiba üzenetet írja nekem debugolás után is:
Invalid player id 0 [AMXX] Displaying debug trace (plugin "achievement.amxx") [AMXX] Run time error 10: native error (native "get_user_weapon") [AMXX] [0] achievement.sma::Oles (line 419)
Kód: #include <amxmodx> #include <amxmisc> #include <sqlx> #include <fakemeta> #include <hamsandwich> #include <fun> #include <csx> #include <engine> #include <fun> #include <cstrike>
#define PLUGIN "Achievement System" #define VERSION "1.1" #define AUTHOR "IrOn"
new g_host, g_user, g_pass, g_db new Handle:g_SqlTuple new g_error[512]
new logfelhasznalo[32], logjelszo[32], regfelhasznalo[32], regjelszo[32]; new bool:bejelentkezve[33];
new belepescheck[512], felhasznalocheck[512], sqlmentes[512], sqloles[1024], sqltalalat[1024], sqldisconnect[1024];
new mentett_user[33][33], mentett_pw[33][33], mentett_userid[33], check_pass[33], check_user[33]; new megtett_tavolsag[33], second[33]; new hatastalanitott_bomba[33], lerakott_bomba[33], felrobbant_bomba[33], jatekido[33]; new talalat[33], oles[33], halal[33], ongyilkos[33];
//VIP new is_user_vip[33]; new vip_ammo, vip_money; new const MAXBPAMMO[] = {-1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100};
new const AMMOTYPE[][] = {"", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm", "57mm", "45acp", "556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox", "buckshot", "556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm"};
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /reg", "AchievementsMenu") g_host = register_cvar("achi_host", "") g_user = register_cvar("achi_user", "") g_pass = register_cvar("achi_pass", "") g_db = register_cvar("achi_db", "") register_clcmd("BEJELENTKEZESI_FELHASZNALO", "belepes_felhasznalo") register_clcmd("BEJELENTKEZESI_JELSZO", "belepes_jelszo") register_clcmd("FELHASZNALO", "reg_felhasznalo") register_clcmd("JELSZO", "reg_jelszo") register_event( "DeathMsg", "Oles", "a" ); register_forward( FM_ClientKill, "Ongyilkossag" ); RegisterHam(Ham_TraceAttack, "player", "Sebzes"); //VIP RegisterHam(Ham_Spawn, "player", "vip_eledes", 1) register_cvar("vip_weapon1", "weapon_awp") register_cvar("vip_weapon2", "weapon_m4a1") register_cvar("vip_weapon3", "weapon_ak47") vip_ammo = register_cvar("vip_fullammo", "1") vip_money = register_cvar("vip_money", "16000") //VIP Vége set_task(60.0, "mentes") }
public vip_eledes(id) { if(is_user_vip[id]) { //FEGYVER new weapon1[51], weapon2[51], weapon3[51]; get_cvar_string("vip_weapon1", weapon1, 50) get_cvar_string("vip_weapon2", weapon2, 50) get_cvar_string("vip_weapon3", weapon3, 50) if(!(equal(weapon1, ""))) give_item(id, weapon1); if(!(equal(weapon2, ""))) give_item(id, weapon2); if(!(equal(weapon3, ""))) give_item(id, weapon3); //TÖLTÉNY switch(get_pcvar_num(vip_ammo)) { case 1: { new weapons[32], num; get_user_weapons(id, weapons, num); for (new i = 0; i < num; i++) { ExecuteHam(Ham_GiveAmmo, id, MAXBPAMMO[weapons[i]], AMMOTYPE[weapons[i]], MAXBPAMMO[weapons[i]]); } } case 0: return PLUGIN_CONTINUE; } //PÉNZ new penz = cs_get_user_money(id)+get_pcvar_num(vip_money) cs_set_user_money(id, penz) } return PLUGIN_CONTINUE; }
public client_disconnect(id) { if(bejelentkezve[id]) { jatekido[id] = jatekido[id]+get_user_time(id) formatex(sqldisconnect, charsmax(sqldisconnect), "UPDATE `achi_felhasznalok` SET `megtett_tavolsag`=^"%d^", `jatekido`=^"%d^", `bomba_hatastalanitas`=^"%d^", `bomba_lerakas`=^"%d^", `bomba_robbanas`=^"%d^", `talalat`=^"%d^", `oles`=^"%d^", `halal`=^"%d^" , `ongyilkos`=^"%d^" WHERE id=^"%d^";", megtett_tavolsag[id], jatekido[id], hatastalanitott_bomba[id], lerakott_bomba[id], felrobbant_bomba[id], talalat[id], oles[id], halal[id], ongyilkos[id], mentett_userid[id]) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqldisconnect) mentett_user[id] = "" bejelentkezve[id] = false second[id] = 0; is_user_vip[id] = false; } }
public client_connect(id) { mentett_user[id] = "" bejelentkezve[id] = false second[id] = 0; is_user_vip[id] = false; }
public mentes() { new Players[32], pnum; get_players(Players, pnum, "ch") for(new i = 0; i < pnum; i++) { new id = Players[i]; if(bejelentkezve[id]) { formatex(sqldisconnect, charsmax(sqldisconnect), "UPDATE `achi_felhasznalok` SET `megtett_tavolsag`=^"%d^", `bomba_hatastalanitas`=^"%d^", `bomba_lerakas`=^"%d^", `bomba_robbanas`=^"%d^", `talalat`=^"%d^", `oles`=^"%d^", `halal`=^"%d^" , `ongyilkos`=^"%d^" WHERE id=^"%d^";", megtett_tavolsag[id], hatastalanitott_bomba[id], lerakott_bomba[id], felrobbant_bomba[id], talalat[id], oles[id], halal[id], ongyilkos[id], mentett_userid[id]) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqldisconnect) } } set_task(60.0, "mentes") }
public client_PreThink(id) { if(get_user_button(id) & IN_FORWARD && bejelentkezve[id]) { new Float: speed[33]; speed[id] = get_user_maxspeed(id); new speedr[33]; speedr[id] = floatround(speed[id], floatround_round); second[id]++; megtett_tavolsag[id] = (speedr[id] * second[id])/1000; } }
public plugin_cfg() { new Host[64], User[32], Pass[32], DB[128]; get_pcvar_string(g_host, Host, charsmax(Host)) get_pcvar_string(g_user, User, charsmax(User)) get_pcvar_string(g_pass, Pass, charsmax(Pass)) get_pcvar_string(g_db, DB, charsmax(DB)) g_SqlTuple = SQL_MakeDbTuple(Host, User, Pass, DB) new errorcode, Handle:SqlConnection = SQL_Connect(g_SqlTuple, errorcode, g_error, charsmax(g_error)) new Handle:Query Query = SQL_PrepareQuery(SqlConnection, "CREATE TABLE IF NOT EXISTS `achi_felhasznalok` (`id` INT(255) NOT NULL AUTO_INCREMENT ,`user` VARCHAR(255) NOT NULL ,`pw` VARCHAR(255) NOT NULL ,PRIMARY KEY (`id`) ,INDEX (`id`));") SQL_FreeHandle(Query) SQL_FreeHandle(SqlConnection) }
public QuerySetData(FailState, Handle:Query, error[],errcode, data[], datasize) { if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) { return } }
public AchievementsMenu(id) { new menu = menu_create("\rAchievements Rendszer:", "AchievementsMenu_handler"); if(bejelentkezve[id]) menu_additem(menu, "\wKijelentkezes", "1", 0); else { menu_additem(menu, "\wRegisztracio", "1", 0); menu_additem(menu, "\wBelepes", "2", 0); } menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); }
public AchievementsMenu_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback); new key = str_to_num(data); switch(key) { case 1: { if(bejelentkezve[id]) { bejelentkezve[id] = false; client_print(id, print_chat, "Kijelentkeztel!") AchievementsMenu(id) } else client_cmd(id, "messagemode FELHASZNALO") } case 2: { if(bejelentkezve[id]) client_print(id, print_chat, "Mar be vagy jelentkezve!") else client_cmd(id, "messagemode BEJELENTKEZESI_FELHASZNALO") } } menu_destroy(menu); return PLUGIN_HANDLED; }
public belepes_felhasznalo(id) { read_args(logfelhasznalo, charsmax(logfelhasznalo)) remove_quotes(logfelhasznalo)
if(equal(logfelhasznalo, "")) return PLUGIN_HANDLED mentett_user[id] = logfelhasznalo client_cmd(id, "messagemode BEJELENTKEZESI_JELSZO") return PLUGIN_CONTINUE }
public belepes_jelszo(id) { read_args(logjelszo, charsmax(logjelszo)) remove_quotes(logjelszo)
if(equal(logfelhasznalo, "")) return PLUGIN_HANDLED mentett_pw[id] = logjelszo Belepesellenorzese(id) return PLUGIN_CONTINUE }
public Belepesellenorzese(id) { new data[1] data[0] = id formatex(belepescheck, charsmax(belepescheck), "SELECT `id`, `user`, `pw`, `megtett_tavolsag`, `jatekido`, `bomba_hatastalanitas`, `bomba_lerakas`, `bomba_robbanas`, `vip`, `talalat`, `oles`, `halal`, `ongyilkos` FROM `achi_felhasznalok` WHERE user = ^"%s^" AND pw = ^"%s^";", mentett_user[id], mentett_pw[id]) SQL_ThreadQuery(g_SqlTuple, "QuerySelectDataBejelentkezes", belepescheck, data, 1) }
public QuerySelectDataBejelentkezes(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime) { if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) { log_amx("%s", error) return } else { new id = data[0]; new col_user = SQL_FieldNameToNum(Query, "user") new col_pw = SQL_FieldNameToNum(Query, "pw") new col_id = SQL_FieldNameToNum(Query, "id") new col_tavolsag = SQL_FieldNameToNum(Query, "megtett_tavolsag") new col_hatastalanitott = SQL_FieldNameToNum(Query, "bomba_hatastalanitas") new col_lerakott = SQL_FieldNameToNum(Query, "bomba_lerakas") new col_robbant = SQL_FieldNameToNum(Query, "bomba_robbanas") new col_jatekido = SQL_FieldNameToNum(Query, "jatekido") new col_vip = SQL_FieldNameToNum(Query, "vip") new col_talalat = SQL_FieldNameToNum(Query, "talalat") new col_oles = SQL_FieldNameToNum(Query, "oles") new col_halal = SQL_FieldNameToNum(Query, "halal") new col_ongyilkos = SQL_FieldNameToNum(Query, "ongyilkos")
while(SQL_MoreResults(Query)) { SQL_ReadResult(Query, col_user, check_user, charsmax(check_user)) SQL_ReadResult(Query, col_pw, check_pass, charsmax(check_pass)) mentett_userid[id] = SQL_ReadResult(Query, col_id) megtett_tavolsag[id] = SQL_ReadResult(Query, col_tavolsag) hatastalanitott_bomba[id] = SQL_ReadResult(Query, col_hatastalanitott) lerakott_bomba[id] = SQL_ReadResult(Query, col_lerakott) felrobbant_bomba[id] = SQL_ReadResult(Query, col_robbant) jatekido[id] = SQL_ReadResult(Query, col_jatekido) talalat[id] = SQL_ReadResult(Query, col_talalat) oles[id] = SQL_ReadResult(Query, col_oles) halal[id] = SQL_ReadResult(Query, col_halal) ongyilkos[id] = SQL_ReadResult(Query, col_ongyilkos) new vip[33]; vip[id] = SQL_ReadResult(Query, col_vip) if(vip[id] == 1) is_user_vip[id] = true else is_user_vip[id] = false new Float: speed[33]; speed[id] = get_user_maxspeed(id); new speedr[33]; speedr[id] = floatround(speed[id], floatround_round); second[id] = ((megtett_tavolsag[id]*1000)/speedr[id]) if(equal(mentett_user[id], check_user) && equal(mentett_pw[id], check_pass)) { bejelentkezve[id] = true; client_print(id, print_chat, "Sikeres bejelentkezes!") AchievementsMenu(id) } SQL_NextRow(Query) } } }
public reg_felhasznalo(id) { read_args(regfelhasznalo, charsmax(regfelhasznalo)) remove_quotes(regfelhasznalo)
if(equal(regfelhasznalo, "")) return PLUGIN_HANDLED mentett_user[id] = regfelhasznalo Felhasznalo_Ellenorzese(id) client_cmd(id, "messagemode JELSZO") return PLUGIN_CONTINUE }
public reg_jelszo(id) { read_args(regjelszo, charsmax(regjelszo)) remove_quotes(regjelszo)
if(equal(regjelszo, "")) return PLUGIN_HANDLED mentett_pw[id] = regjelszo formatex(sqlmentes, charsmax(sqlmentes), "INSERT INTO `achi_felhasznalok`(`user`, `pw`) VALUES (^"%s^",^"%s^");", mentett_user[id], mentett_pw[id]) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqlmentes) client_print(id, print_chat, "Sikeresen regisztraltal!") Belepesellenorzese(id) return PLUGIN_CONTINUE }
public Felhasznalo_Ellenorzese(id) { new data[1] data[0] = id formatex(felhasznalocheck, charsmax(felhasznalocheck), "SELECT `user` FROM `achi_felhasznalok` WHERE user = ^"%s^";", mentett_user[id]) SQL_ThreadQuery(g_SqlTuple, "QuerySelectDataFelhasznalo", felhasznalocheck, data, 1) }
public QuerySelectDataFelhasznalo(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime) { if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) { log_amx("%s", error) return } else { new id = data[0]; new col_user = SQL_FieldNameToNum(Query, "user")
while(SQL_MoreResults(Query)) { SQL_ReadResult(Query, col_user, check_user, charsmax(check_user)) if(equal(mentett_user[id], check_user)) { client_print(id, print_chat, "Ez a felhasznalo mar letezik!") client_cmd(id, "messagemode FELHASZNALO") } SQL_NextRow(Query) } } }
public Oles() { new killer = read_data( 1 ); new victim = read_data( 2 ); if(killer == victim) { if(bejelentkezve[killer]) { ongyilkos[killer]++ formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_ongyilkossag`(`userid`) VALUES (^"%d^");", mentett_userid[killer]) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles) } return PLUGIN_HANDLED; } halal[victim]++ oles[killer]++ new fegyver = get_user_weapon(killer) new hp = get_user_health(killer) new armor = get_user_armor(killer) if(bejelentkezve[killer] && bejelentkezve[victim]) { formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_olesek`(`killer_id`, `halott_id`, `fegyverid`, `killer_hp`, `killer_armor`) VALUES (^"%d^",^"%d^",^"%d^",^"%d^",^"%d^");", mentett_userid[killer], mentett_userid[victim], fegyver, hp, armor) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles) } else if(bejelentkezve[killer]) { formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_olesek`(`killer_id`, `halott_id`, `fegyverid`, `killer_hp`, `killer_armor`) VALUES (^"%d^",^"0^",^"%d^",^"%d^",^"%d^");", mentett_userid[killer], fegyver, hp, armor) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles) } else if(bejelentkezve[victim]) { formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_olesek`(`killer_id`, `halott_id`, `fegyverid`, `killer_hp`, `killer_armor`) VALUES (^"0^",^"%d^",^"%d^",^"%d^",^"%d^");", mentett_userid[victim], fegyver, hp, armor) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles) } return PLUGIN_CONTINUE; }
public Ongyilkossag(id) { if(bejelentkezve[id]) { ongyilkos[id]++ formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_ongyilkossag`(`userid`) VALUES (^"%d^");", mentett_userid[id]) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles) } }
public Sebzes(Vic, Att, Float:dmg, Float:dir[3], traceresult, dmgbits) { new talalat_helye = get_tr2(traceresult, TR_iHitgroup) new fegyver = get_user_weapon(Att) if(bejelentkezve[Vic] && bejelentkezve[Att]) { formatex(sqltalalat, charsmax(sqltalalat), "INSERT INTO `achi_talalatok`(`attacker_id`, `victim_id`, `fegyverid`, `talalat_helye`, `sebzes_erteke`) VALUES (^"%d^",^"%d^",^"%d^",^"%d^",^"%f^");", mentett_userid[Att], mentett_userid[Vic], fegyver, talalat_helye, dmg ) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqltalalat) } else if(bejelentkezve[Vic]) { formatex(sqltalalat, charsmax(sqltalalat), "INSERT INTO `achi_talalatok`(`attacker_id`, `victim_id`, `fegyverid`, `talalat_helye`, `sebzes_erteke`) VALUES (^"0^",^"%d^",^"%d^",^"%d^",^"%f^");", mentett_userid[Vic], fegyver, talalat_helye, dmg ) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqltalalat) } else if(bejelentkezve[Att]) { formatex(sqltalalat, charsmax(sqltalalat), "INSERT INTO `achi_talalatok`(`attacker_id`, `victim_id`, `fegyverid`, `talalat_helye`, `sebzes_erteke`) VALUES (^"%d^",^"0^",^"%d^",^"%d^",^"%f^");", mentett_userid[Att], fegyver, talalat_helye, dmg ) SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqltalalat) } talalat[Att]++ return HAM_IGNORED; }
public bomb_defused(defuser) hatastalanitott_bomba[defuser]++; public bomb_explode(planter) felrobbant_bomba[planter]++; public bomb_planted(planter) lerakott_bomba[planter]++;
Ez a rész direkt üres: g_host = register_cvar("achi_host", "") g_user = register_cvar("achi_user", "") g_pass = register_cvar("achi_pass", "") g_db = register_cvar("achi_db", "")
Segítségeteket előre is köszönöm.
|