Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
Rozpoczynaj nowe tematy i odpowiedaj na inne
Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
Dodawaj wydarzenia do kalendarza społecznościowego
Stwórz swój własny profil i zdobywaj nowych znajomych
W tym Poradniku Przedstawie wam jak zrobić Slynnego DiabloModa 5.9l [SQL] na DiabloMod 5.9l [nVault]! Wiec Do Dzieła!
Znajdz:
#include <sqlx>
Za mien na:
#include <nvault>
Znajdz:
new bool:g_wasducking[MAX+1]
Dodaj pod:
new g_vault
Znajdz i Usun:
new player_class_lvl[33][9]
new player_class_lvl_save[33]
new player_xp_old[33]
new database_user_created[33]
new srv_avg[9] = {1,1,1,1,1,1,1,1,1}
Aha i Jeszcze usun:
new loaded_xp[33]
new sqlstart = 30 // Tyle prob jest na mape na poprawne polaczenie - bo cos sie zapetla gdy wylancza sie serwer (zmiena mapy?)
new asked_sql[33]
new asked_klass[33]
new olny_one_time=0
Znajdz i Usun:
// SQL //
new Handle:g_SqlTuple
new g_sqlTable[64] = "dbmod_tables"
new g_boolsqlOK=0
// SQL //
W public plugin_init() usuń :
new map[32]
get_mapname(map,31)
new times[64]
get_time("%m/%d/%Y - %H:%M:%S" ,times,63)
log_to_file("addons/amxmodx/logs/diablo.log","%s ### MAPA: %s ### ",times,map)
register_cvar("diablo_sql_host","localhost",FCVAR_PROTECTED)
register_cvar("diablo_sql_user","root",FCVAR_PROTECTED)
register_cvar("diablo_sql_pass","root",FCVAR_PROTECTED)
register_cvar("diablo_sql_database","dbmod",FCVAR_PROTECTED)
register_cvar("diablo_sql_table","dbmod_tablet",FCVAR_PROTECTED)
register_cvar("diablo_sql_save","0",FCVAR_PROTECTED) // 0 - nick
// 1 - ip
// 2 - steam id
Oraz:
register_cvar("diablo_avg", "1")
I dodaj na poczatku plugin_init() :
g_vault = nvault_open("Diablo_stats")
Znajdz:
//Koniec noze
Usun:
Spoiler
public sql_start()
{
if(sqlstart<0) return
if(g_boolsqlOK) return
new host[128]
new user[64]
new pass[64]
new database[64]
get_cvar_string("diablo_sql_database",database,63)
get_cvar_string("diablo_sql_host",host,127)
get_cvar_string("diablo_sql_user",user,63)
get_cvar_string("diablo_sql_pass",pass,63)
g_SqlTuple = SQL_MakeDbTuple(host,user,pass,database)
get_cvar_string("diablo_sql_table",g_sqlTable,63)
new q_command[512]
format(q_command,511,"CREATE TABLE IF NOT EXISTS `%s` ( `nick` VARCHAR( 64 ),`ip` VARCHAR( 64 ),`sid` VARCHAR( 64 ), `klasa` integer( 2 ) , `lvl` integer( 3 ) DEFAULT 1, `exp` integer( 9 ) DEFAULT 0, `str` integer( 3 ) DEFAULT 0, `int` integer( 3 ) DEFAULT 0, `dex` integer( 3 ) DEFAULT 0, `agi` integer( 3 ) DEFAULT 0 ) ",g_sqlTable)
SQL_ThreadQuery(g_SqlTuple,"TableHandle",q_command)
}
//sql//
public TableHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
// lots of error checking
g_boolsqlOK=1
if(Errcode)
{
g_boolsqlOK=0
log_to_file("addons/amxmodx/logs/diablo.log","Error on Table query: %s",Error)
}
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
g_boolsqlOK=0
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("addons/amxmodx/logs/diablo.log","Table Query failed.")
g_boolsqlOK=0
return PLUGIN_CONTINUE
}
LoadAVG()
return PLUGIN_CONTINUE
}
public create_klass(id)
{
if(g_boolsqlOK)
{
if(!is_user_bot(id) && database_user_created[id]==0)
{
new name[64]
new ip[64]
new sid[64]
get_user_name(id,name,63)
replace_all ( name, 63, "'", "Q" )
replace_all ( name, 63, "`", "Q" )
get_user_ip ( id, ip, 63, 1 )
get_user_authid(id, sid ,63)
log_to_file("addons/amxmodx/logs/test_log.log","*** %s %s *** Create Class ***",name,sid)
for(new i=1;i<9;i++)
{
new q_command[512]
format(q_command,511,"INSERT INTO `%s` (`nick`,`ip`,`sid`,`klasa`,`lvl`,`exp`) VALUES ('%s','%s','%s',%i,%i,%i ) ",g_sqlTable,name,ip,sid,i,srv_avg[i],LevelXP[srv_avg[i]-1])
SQL_ThreadQuery(g_SqlTuple,"create_klass_Handle",q_command)
}
database_user_created[id]=1
}
}
else sql_start()
}
public create_klass_Handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
// lots of error checking
if(Errcode)
{
log_to_file("addons/amxmodx/logs/diablo.log","Error on create klass query: %s",Error)
}
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("addons/amxmodx/logs/diablo.log","create klass Query failed.")
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public SelectHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(Errcode)
{
log_to_file("addons/amxmodx/logs/diablo.log","Error on load_xp query: %s",Error)
}
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("addons/amxmodx/logs/diablo.log","load_xp Query failed.")
return PLUGIN_CONTINUE
}
if(SQL_MoreResults(Query)) return PLUGIN_CONTINUE
else create_klass(Data[0])
return PLUGIN_CONTINUE
}
//sql//
public SaveXP(id) oraz public LoadXP(id) Zamien na:
Spoiler
public SaveXP(id){ new name[32]; get_user_name(id,name,31);
replace_all(name, 31, " ", "'")
new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-Dbmod",name) format(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i",player_class[id],player_xp[id],player_lvl[id],player_intelligence[id],player_strength[id],player_point[id],player_agility[id],player_dextery[id]) nvault_set(g_vault,vaultkey,vaultdata) return PLUGIN_HANDLED }
public LoadXP(id){ new name[32]; get_user_name(id,name,31);
replace_all(name, 31, " ", "'")
new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-Dbmod",name) format(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i",player_class[id],player_xp[id],player_lvl[id],player_intelligence[id],player_strength[id],player_point[id],player_agility[id],player_dextery[id]) nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new playerclass[33], playerxp[33],playerlvl[33],playerintelligence[33],playerstrength[33],playerpoint[33],playeragility[33],playerdextery[33]
public Save_xp_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
oraz
public Load_xp_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
oraz
public LoadAVG()
oraz
public Load_AVG_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
oraz
public look_for_none()
oraz
public select_class_query(id)
oraz
public select_class_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
public select_class(id,lx[]) oraz public select_class_menu(id, key)
Zamien na:
Spoiler
public select_class(id) { new text[513] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)
format(text, 512, "\yWybierz Klase - ^n\w1. Mag [Lepsze obrazenia magia]^n\w2. Paladyn [Premia do sily]^n\w3. Mnich [Dostaje wiecej doswiadczenia]^n\w4. Zabojca [Jest szybki i nie slychac jak chodzi]^n\w5. Barbarzynca [Zwracaja hitpoint po zabiciu kogos]^n\w6. Nekromanta [Zwraca jakies obrazenia zadane mu oraz wskrzesza innych]^n\w7. Ninja [Szybki, ma tylko noz i jest prawie niewidzialny]^n\w8. Łowca [Posiada kusze i kladzie pulapki z Granatow ( PPM )]")
public select_class_menu(id, key) { g_haskit[id] = 0 switch(key) { case 0: { player_class[id] = Mag } case 1: { player_class[id] = Paladyn } case 2: { player_class[id] = Mnich } case 3: { player_class[id] = Zabojca } case 4: { player_class[id] = Barbarzynca } case 5: { player_class[id] = Nekromanta g_haskit[id] = 1 } case 6: { player_class[id] = Ninja } case 7: { player_class[id] = Hunter g_GrenadeTrap[id] = 1 } }
if (player_class[id] == 0) select_class(id)
set_renderchange(id) give_knife(id)
return PLUGIN_HANDLED }
public changerace(id)
Zamien na:
public changerace(id) { set_user_health(id,0) savexpcom(id) client_connect(id) select_class(id) }
Znajdz:
public client_putinserver(id)
Zamien na:
public client_putinserver(id){ count_jumps(id) JumpsLeft[id]=JumpsMax[id] }
Znajdz:
public client_disconnect(id)
Zamien na:
public client_disconnect(id) { new ent new playername[40] get_user_name(id,playername,39) player_dc_name[id] = playername player_dc_item[id] = player_item_id[id] if (player_b_oldsen[id] > 0.0) client_cmd(id,"sensitivity %f",player_b_oldsen[id]) savexpcom(id)
A co Ty chcesz podmieniać? Przecież frakcje to tylko "fikcyjne nazwy" które głównie służą łatwiejszej orientacji, zapis expa jak i wczytywanie w żadnym wypadku nie mają nic wspólnego z nimi.
0
Piszesz na gg w sprawie pomocy? Z góry ignore, pozdrawiam.
CoD 1.6 scripting tutorial ( Indonesian Language, you can use google translate )
Napisany przez MasamuneDate, 27.04.2022
tutorial, guide, codmodi 1 więcej