AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Mysql Not work for Diablo 2 (https://forums.alliedmods.net/showthread.php?t=294342)

WolfM3St3r 02-25-2017 08:34

Mysql Not work for Diablo 2
 
Problem connect mysql errors:
Code:

[diablo2LOD.amxx] [MYSQLX] You have an error in your SQ syntax; check the manual that corresponds to your MySQ server version for the right syntax to use near 'TYPE=MyISAM' at line 1L 02/25/2017 - 11:25:49:
[diablo2LOD.amxx] [MYSQLX] Table 'diablo2.d2_data' doesn't exist Load Fail!
L 02/25/2017 - 11:26:58: [admincmd.amxx] Cmd: "Wolf<1><STEAM_0:1:83414680><>" changelevel "de_dust2"
L 02/25/2017 - 11:27:01: [diablo2LOD.amxx] [MYSQLX] Table 'diablo2.d2_data' doesn't exist Save Fail!

Mysql include Diablo:
PHP Code:

// Player save/load data MYSQL
public MYSQLX_Init()
{
    if ( !
get_pcvar_num(d2_save_type) )
        return;

    
// Determine the database information
    
new szHost[64], szUser[32], szPass[32], szDB[128], szError[256], iErrNum;

    
get_pcvar_stringmysqlx_hostszHostcharsmaxszHost ) );
    
get_pcvar_stringmysqlx_userszUsercharsmaxszUser ) );
    
get_pcvar_stringmysqlx_passszPasscharsmaxszPass ) );
    
get_pcvar_stringmysqlx_dbszDBcharsmaxszDB ) );

    
// Set up the tuple that will be used for threading
    
g_DBTuple SQL_MakeDbTupleszHostszUserszPassszDB );

    
// Attempt to connect
    
g_DBConn SQL_Connectg_DBTupleiErrNumszErrorcharsmaxszError ) );

    if ( !
g_DBConn )
    {
        
log_amx"[MYSQLX] Database Connection Failed: [%d] %s"iErrNumszError );

        return;
    }

    
SQL_ThreadQueryg_DBTuple"QueryCreateTable"gTableCreateQuery)
}
public 
QueryCreateTableiFailStateHandle:hQueryszError[ ], iErroriData[ ], iDataSizeFloat:fQueueTime 

    if( 
iFailState == TQUERY_CONNECT_FAILED 
    
|| iFailState == TQUERY_QUERY_FAILED 
    { 
        
log_amx"[MYSQLX] %s"szError ); 
        
        return;
    } 
}

public 
MYSQLX_Save_Tid 

    
// Make sure our connection is working 
    
if ( !g_DBConn 
    { 
        return; 
    } 

    
// Save the user's XP! 
    
new iLen[3] = 0
    static 
szData[12000], szQuery[14000], szData2[12000], szData3[12000]; 
    
    
iLen[0] += formatexszDataiLen[0] ], charsmax(szData) - iLen[0], "%d %d#"g_PlayerChars[id], g_CurrentMana[id] );
    
    for(new 
hero_id 0hero_id MAX_CHARS hero_id++)
    {
        
iLen[0] += formatex szDataiLen[0] ], charsmax(szData) - iLen[0], "%d %d %d %d %d %d %d %d %d %d %d %d#"g_PlayerLevel[id][hero_id], g_PlayerXp[id][hero_id], g_PlayerSkPoints[id][hero_id], g_PlayerStPoints[id][hero_id], g_Strength[id][hero_id],
        
g_Dexterity[id][hero_id], g_Vitality[id][hero_id], g_Energy[id][hero_id], 
        
g_Coins[id][hero_id], g_CoinsInv[id][hero_id], g_PlayerHero[id][hero_id], g_PlayerCharActive[id][hero_id] )
    }    
    for( new 
iSkill 0iSkill <= g_skillcounteriSkill++ ) 
    {
        for(new 
hero_id 0hero_id MAX_CHARS hero_id++)
        {
            
iLen[0] += formatexszDataiLen[0] ], charsmax(szData) - iLen[0], "%d#"g_iSkills[id][hero_id][iSkill] );
        }    
    }

    
iLen[1] += formatexszData2iLen[1] ], charsmax(szData2) - iLen[1], "#" );
    
    for( new 
iPotions 0iPotions MAX_POTIONS iPotions++ )
    {
        for(new 
hero_id 0hero_id MAX_CHARS hero_id++)
        {
            
iLen[1] += formatexszData2iLen[1] ], charsmax(szData2) - iLen[1], "%d %d#",  g_iPlayerPotions[id][hero_id][iPotions], g_iPlayerPotionsInv[id][hero_id][iPotions] )
        }    
    }

    
iLen[2] += formatexszData3iLen[2] ], charsmax(szData3) - iLen[2], "#" );
    
    for( new 
iItems 0iItems <= g_charcounter iItems++ )
    {
        for(new 
hero_id 0hero_id MAX_CHARS hero_id++)
        {
            
iLen[2] += formatexszData3iLen[2] ], charsmax(szData3) - iLen[2], "%d %d %d %d %d#",  g_iPlayerItem[id][hero_id][iItems], g_iPlayerItemInv[id][hero_id][iItems], g_iPlayerItemBolts[id][hero_id][iItems], 
            
g_iPlayerItemWorn[id][hero_id][iItems], g_iPlayerItemRepair[id][hero_id][iItems] )
        }
    }

    new 
szKey[66], szKeyName[32];
    
Save_GetKeyidszKeycharsmaxszKey ) );
    
Save_GetKeyNameszKeyNamecharsmaxszKeyName ) );
    

    
formatexszQuerycharsmax(szQuery), "REPLACE INTO d2_data ( player_data, player_data2, player_data3, %s ) VALUES ( '%s', '%s', '%s', '%s' );"szKeyNameszDataszData2szData3szKey ); 
    
SQL_ThreadQueryg_DBTuple"_MYSQLX_Save_T"szQuery);
    
    return; 

public 
_MYSQLX_Save_TfailstateHandle:queryerror[], errnumdata[], size 

    if( 
failstate == TQUERY_CONNECT_FAILED  
    
|| failstate == TQUERY_QUERY_FAILED )  
    {  
        
log_amx"[MYSQLX] %s Save Fail!"error );  
         
        return; 
    }  

public 
MYSQLX_GetAllDataid 

    
// Make sure our connection is working 
    
if ( !g_DBConn 
    { 
        return; 
    } 
    
    new 
szKey[66], szKeyName[32];
    
Save_GetKeyidszKeycharsmaxszKey ) );
    
Save_GetKeyNameszKeyNamecharsmaxszKeyName ) );
         
    new 
szQuery512 ], iData];  
    
formatexszQuerycharsmaxszQuery ), "SELECT * FROM d2_data WHERE %s = '%s';"szKeyNameszKey );  
          
    
iData] = id
    
SQL_ThreadQueryg_DBTuple"_MYSQLX_GetAllData"szQueryiData); 

    return; 

public 
_MYSQLX_GetAllDataiFailStateHandle:hQueryszError[ ], iErroriData[ ], iDataSizeFloat:fQueueTime )  
{  
    if( 
iFailState == TQUERY_CONNECT_FAILED  
    
|| iFailState == TQUERY_QUERY_FAILED )  
    {  
        
log_amx"[MYSQLX] %s Load Fail!"szError ); 
         
        return; 
    }  
    else  
    {  
        new 
id iData]; 
         
        static 
szData[20000], szAllItems[20000], szData2[8000], szAllItems2[8000], szData3[8000], szAllItems3[8000]
        new 
szClassLevel[256], szSkills[256], szItems[256], szPotions[256];
        new 
szHero[126], szLevel[4], szXp[10], szSk[4], szSt[5], szCurMana[6], szStr[5], szDex[5], szVit[5], szEne[5], szCoin[10], szCoinInv[11],
        
szPItem[3], szPItemInv[3], szPItemW[3], szPItemRep[5], szItemB[5], szPotion[3], szPotionInv[4], szPlayerChars[4],
        
szActive[2];

        new 
ColData SQL_FieldNameToNum(hQuery"player_data")  
        new 
ColData2 SQL_FieldNameToNum(hQuery"player_data2")  
        new 
ColData3 SQL_FieldNameToNum(hQuery"player_data3")  

        while (
SQL_MoreResults(hQuery))  
        { 
            
SQL_ReadResult(hQueryColDataszDatacharsmaxszData ) ); 
            
SQL_ReadResult(hQueryColData2szData2charsmaxszData2 ) ); 
            
SQL_ReadResult(hQueryColData3szData3charsmaxszData3 ) ); 

            
strtok(szDataszDatasizeofszData ) - 1szAllItemssizeofszAllItems ) - 1'#')
            
strtok(szData2szData2sizeofszData2 ) - 1szAllItems2sizeofszAllItems2 ) - 1'#')
            
strtok(szData3szData3sizeofszData3 ) - 1szAllItems3sizeofszAllItems3 ) - 1'#')
            
            
parse(szDataszPlayerCharscharsmax(szPlayerChars), szCurManacharsmax(szCurMana) );

            
g_PlayerChars[id] = str_to_numszPlayerChars );
            
g_CurrentMana[id] = str_to_numszCurMana );
            
            for(new 
hero_id 0hero_id MAX_CHARS hero_id++)
            {
                
strtok(szAllItemsszClassLevelsizeofszClassLevel ) - 1szAllItemssizeofszAllItems ) - 1'#')
                
strtok(szClassLevelszLevelsizeofszLevel ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszXpsizeofszXp ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszSksizeofszSk ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszStsizeofszSt ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszStrsizeofszStr ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszDexsizeofszDex ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszVitsizeofszVit ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszEnesizeofszEne ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszCoinsizeofszCoin ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszCoinInvsizeofszCoinInv ) - 1szClassLevelsizeofszClassLevel ) - 1' ')
                
strtok(szClassLevelszHerosizeofszHero ) - 1szActivesizeofszActive ) - 1' ')
                
                
g_PlayerLevel[id][hero_id] = str_to_numszLevel )
                
g_PlayerXp[id][hero_id] = str_to_numszXp )
                
g_PlayerSkPoints[id][hero_id] = str_to_numszSk )
                
g_PlayerStPoints[id][hero_id] = str_to_numszSt )
                
g_Strength[id][hero_id] = str_to_numszStr )
                
g_Dexterity[id][hero_id] = str_to_numszDex )
                
g_Vitality[id][hero_id] = str_to_numszVit )
                
g_Energy[id][hero_id] = str_to_numszEne )
                
g_Coins[id][hero_id] = str_to_numszCoin )
                
g_CoinsInv[id][hero_id] = str_to_numszCoinInv )
                
g_PlayerHero[id][hero_id] = str_to_numszHero );
                
g_PlayerCharActive[id][hero_id] = str_to_numszActive );
            }    
            
            for( new 
iSkill 0iSkill <= g_skillcounteriSkill++ ) 
            {
                for(new 
hero_id 0hero_id MAX_CHARS hero_id++)
                {
                    
strtok(szAllItemsszClassLevelsizeofszClassLevel ) - 1szAllItemssizeofszAllItems ) - 1'#')
                    
strtok(szClassLevelszSkillssizeofszSkills ) - 1szClassLevelsizeofszClassLevel ) - 1'#')

                    
g_iSkills[id][hero_id][iSkill] = str_to_numszSkills );
                }    
            }
            for( new 
iItems 0iItems <= g_charcounter iItems++ )
            {
                for(new 
hero_id 0hero_id MAX_CHARS hero_id++)
                {
                    
strtok(szAllItems3szItemssizeofszItems ) - 1szAllItems3sizeofszAllItems3 ) - 1'#')
            
                    
strtok(szItemsszPItemsizeofszPItem ) - 1szItemssizeofszItems ) - 1' ')
                    
strtok(szItemsszPItemInvsizeofszPItemInv ) - 1szItemssizeofszItems ) - 1' ')
                    
strtok(szItemsszItemBsizeofszItemB ) - 1szItemssizeofszItems ) - 1' ')
                    
strtok(szItemsszPItemWsizeofszPItemW ) - 1szPItemRepsizeofszPItemRep ) - 1' ')
                        
                    
g_iPlayerItem[id][hero_id][iItems] = str_to_numszPItem );
                    
g_iPlayerItemInv[id][hero_id][iItems] = str_to_numszPItemInv );
                    
g_iPlayerItemBolts[id][hero_id][iItems] = str_to_numszItemB );
                    
g_iPlayerItemWorn[id][hero_id][iItems] = str_to_numszPItemW );
                    
g_iPlayerItemRepair[id][hero_id][iItems] = str_to_numszPItemRep );
                }    
            }
            for( new 
iPotions 0iPotions MAX_POTIONS iPotions++ )
            {
                for(new 
hero_id 0hero_id MAX_CHARS hero_id++)
                {
                    
strtok(szAllItems2szPotionssizeofszPotions ) - 1szAllItems2sizeofszAllItems2 ) - 1'#')
                            
                    
strtokszPotionsszPotionsizeofszPotion ) - 1szPotionInvsizeofszPotionInv ) - 1' ')

                    
g_iPlayerPotions[id][hero_id][iPotions] = str_to_numszPotion )
                    
g_iPlayerPotionsInv[id][hero_id][iPotions] = str_to_numszPotionInv )
                }    
            }
         
            
SQL_NextRow(hQuery
        } 
    }  

// Function will return the appropriate key for a user
public Save_GetKeyidszKey[], len )
{
    switch( 
get_pcvar_numd2_save_by ) )
    {
        case 
2:
        {
            
get_user_nameidszKeylen );

            
replace_allszKeylen"'""\'" );
        }

        case 
1:    get_user_ipidszKeylen);
        case 
0:    get_user_authididszKeylen );
    }
}

// Function will return the keyname
public Save_GetKeyNameszKeyName[], len )
{
    switch( 
get_pcvar_numd2_save_by ) )
    {
        case 
2:    copyszKeyNamelen"player_name" );
        case 
1:    copyszKeyNamelen"player_ip" );
        case 
0:    copyszKeyNamelen"player_steamid" );
    }


Script DiabloLod.sma
PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#include <nvault>
#include <sqlx>

#define VERSION    "2.3"

// Main includes
#include "diablo2LOD/const.inl"
#include "diablo2LOD/vars.inl"
#include "diablo2LOD/nvault.inl"
#include "diablo2LOD/events.inl"
#include "diablo2LOD/forwards.inl"
#include "diablo2LOD/cvars.inl"
#include "diablo2LOD/messages.inl"
#include "diablo2LOD/menu.inl"
#include "diablo2LOD/motd.inl"
#include "diablo2LOD/public.inl"
#include "diablo2LOD/entity.inl"
#include "diablo2LOD/commands.inl"
#include "diablo2LOD/items.inl"
#include "diablo2LOD/classes.inl"
#include "diablo2LOD/effects.inl"
#include "diablo2LOD/stocks.inl"
#include "diablo2LOD/mysql.inl"

public plugin_init()
{
    
register_plugin("Diablo II : Lord of Destruction"VERSION"xbatista");
    
    
register_cvar("d2lod_version"VERSIONFCVAR_SPONLY|FCVAR_SERVER)
    
set_cvar_string("d2lod_version"VERSION)

    
// Loads all cvars
    
LoadCvars();
    
    
// Events
    
register_event("HLTV""Event_New_Round""a""1=0""2=0");
    
register_event("CurWeapon""Ev_CurWeapon""be""1=1");
    
register_event"TeamInfo""Ev_JoinTeam""a")
    
register_logevent("Logevent_Round_Start"2"1=Round_Start");
    
register_logevent("Event_Round_End"2"1=Round_End");

    
register_touch("Coins""player""Coins_Pickup")
    
register_touch("ItemsDeath""player""Item_Touch")
    
register_touch("PotionsDeath""player""Potion_Touch")

    
register_think("trigger_camera""PlayerCamera_Think")

    
// Forwards
    
RegisterHam(Ham_TakeDamage"player""fwd_PlayerDamaged");
    
RegisterHam(Ham_TakeDamage"func_wall""fwd_PlayerDamagedMonster");
    
RegisterHam(Ham_Spawn"player""fwd_PlayerSpawn"1);
    
RegisterHam(Ham_TraceAttack"player""fwd_TraceAttack");
    
RegisterHam(Ham_Killed"player""fwd_Killed");
    
RegisterHam(Ham_Killed"player""fwd_KilledPost"1);
    
RegisterHam(Ham_Touch"weaponbox""Fwd_Touch");
    
RegisterHam(Ham_Touch"armoury_entity""Fwd_Touch");
    
RegisterHamHam_Weapon_PrimaryAttack"weapon_knife""fwd_AttackSpeed" );
    
RegisterHamHam_Item_Deploy "weapon_knife""fwd_AttackSpeed"1);
    new 
szWeaponName24 ];
    for ( new 
WeaponId 1WeaponId <= 30WeaponId++ )
    {
        if ( 
get_weaponname WeaponIdszWeaponNamecharsmax szWeaponName ) ) )
        {
            
RegisterHamHam_CS_Item_GetMaxSpeed szWeaponName"fwd_ItemGetMaxSpeed");
        }
    }
    
    
register_forward(FM_ClientKill"fwd_ClientKill");
    
register_forward(FM_CmdStart"fwd_CmdStart");
    
register_forward(FM_GetGameDescription,    "fwd_GameDescription");
    
register_forward(FM_ClientUserInfoChanged"ClientUserInfoChanged");
    
register_forward(FM_Touch"Entity_Touched");

    
// Get/register messages
    
MsgSayText get_user_msgid("SayText");
    
MsgHideWeapon    get_user_msgid("HideWeapon")
    
MsgHideCrosshair get_user_msgid("Crosshair")
    
gmsgClCorpse get_user_msgid("ClCorpse")

    
register_message(get_user_msgid("StatusIcon"),    "Message_StatusIcon")
    
register_message(get_user_msgid("VGUIMenu"), "Message_VGUIMenu")

    
g_iItemTook CreateMultiForward("D2_Item_Gone"ET_IGNOREFP_CELLFP_CELL);
    
g_DamagedbySkill CreateMultiForward("d2_skill_takedamage"ET_IGNOREFP_CELLFP_CELLFP_ARRAY);
    
g_SkillSelected CreateMultiForward("d2_skill_selected"ET_IGNOREFP_CELLFP_CELL);
    
g_SkillFired CreateMultiForward("d2_skill_fired"ET_IGNOREFP_CELL);
    
g_TakeDamage CreateMultiForward("d2_takedamage"ET_IGNOREFP_CELLFP_CELLFP_ARRAY);
    
g_iLog CreateMultiForward("d2_logged"ET_IGNOREFP_CELLFP_CELL);
    
g_RangedDamage CreateMultiForward("d2_ranged_takedamage"ET_IGNOREFP_CELLFP_CELLFP_ARRAY);
    
g_DaggerPoisonDamage CreateMultiForward("d2_dagger_poisondamage"ET_IGNOREFP_CELLFP_CELLFP_ARRAY);
    
g_ActRangedShoot CreateMultiForward("d2_ranged_actshoot"ET_IGNOREFP_CELLFP_CELL);
    
    
    
// Other
    
g_iMaxPlayers get_maxplayers();
    
g_SyncHudCreate CreateHudSyncObj();
    
g_SyncHudCreate_Avade CreateHudSyncObj();

    if ( 
get_pcvar_num(d2_advert) )
    {
        
set_taskget_pcvar_float(d2_advert_time), "Adv_Message"0__"b");
    }

    
// Connect to MYSQL.
    
set_task1.0"MYSQLX_Init");
    
    new 
EntCount;
        
    while( ( 
Ent find_ent_by_classEnt"info_player_start" ) ) > )
        if( 
Count++ > )
            break;
        
    if( 
Count <= )
        
g_iFakeplayer = -1;

    
set_task2.0"AddFakeClient" );

    
set_task1.0"Spawn_Items");
    
set_task1.0"Spawn_Items_Charsi")
    
set_task1.0"Spawn_Items_Akara")
}

public 
plugin_natives()
{
    
register_native("get_current_speed""native_get_current_speed"1);
    
register_native("get_player_logged""native_get_player_logged"1);
    
register_native("set_p_xp""Set_Player_Xp"1);
    
register_native("get_p_xp""native_get_p_xp"1);
    
register_native("get_p_hero""native_get_p_hero"1);
    
register_native("get_p_level""native_get_p_level"1);
    
register_native("set_p_mana""Set_Player_Mana"1);
    
register_native("get_p_mana""native_get_p_mana"1);
    
register_native("get_p_vitality""native_get_p_vitality"1);
    
register_native("set_p_vitality""native_set_p_vitality"1);
    
register_native("set_p_gold""Set_Player_Coins"1);
    
register_native("set_p_gold_inventory""Set_Player_CoinsInv"1);
    
register_native("get_p_gold_inventory""native_get_p_gold_inventory"1);
    
register_native("get_p_gold""native_get_p_gold"1);
    
register_native("get_p_item_wear_type""Player_WItemType"1);
    
register_native("get_p_item_wear_data""Player_WItemDataActive"1);
    
register_native("MAX_SKILLS_ACTIVE""native_MAX_SKILLS_ACTIVE"1);
    
register_native("MAX_ITEMS_ACTIVE""native_MAX_ITEMS_ACTIVE"1);
    
register_native("get_p_in_safezone""native_get_p_in_safezone"1);
    
register_native("is_p_protected""native_is_p_protected"1);
    
register_native("dmg_kill_player""Native_Dmg_Kill_Player");
    
register_native("get_p_skill""native_get_p_skill"1);
    
register_native("is_freezetime""native_is_freezetime"1);
    
register_native("reset_p_model""Set_Custom_Model"1);
    
register_native("get_p_item_count""native_get_p_item_count"1);
    
register_native("get_p_item_is_worn""native_get_p_item_is_worn"1);
    
register_native("get_p_maxhealth""native_get_p_maxhealth"1);
    
register_native("set_p_maxhealth""native_set_p_maxhealth"1);
    
register_native("IsPlayerNearByMonster""native_get_p_near_monster"1);
    
register_native("drop_coins""Native_Create_Coins");
    
register_native("set_user_model""native_set_user_model");
}

public 
client_connect(id)
{
    
set_user_info(id"_vgui_menus""1");

    
client_cmd(id"cl_corpsestay %f"get_pcvar_float(d2_cl_corpsestay) );

    
g_Player_FirstTime_Connected[id] = true;

    
// Resets all players Data
    
Reset_Data(id);
    
    
// Loads all player's Data
    
if ( !is_user_bot(id) && g_iFakeplayer != id )
    {
        if ( !
get_pcvar_num(d2_save_type) )
        {
            
Load_Data(id);
        }
        else
        {
            
set_task1.0"MYSQLX_GetAllData"id);
        }
    }
}
public 
client_disconnect(id)
{
    
End_poison_damage(id);

    
// Remove some task
    
remove_taskid TASKID_FIRSTCONNECT );

    if ( 
get_pcvar_num(d2_3rdperson) )
    {
        new 
iEnt g_iCam[id]
        if( 
is_valid_ent(iEnt) )
        {
            
g_iCam[id] = 0
            remove_entity
(iEnt)
        }
    }

    
// Reset some bools
    
g_Player_FirstTime_Connected[id] = false;
    
g_Player_Info[id] = false;
    
g_iLogged[id] = false;

    if( 
g_iFakeplayer == id 
    {
        
g_iFakeplayer 0;
        
set_task1.5"AddFakeClient" );
    }

    
// Reset model's forwards
    
g_szModel[id][0] = 0
    Set_Plugin_State
(idfalse)

    
// Saves all player's Data
    
if ( !is_user_bot(id) && g_iFakeplayer != id )
    {
        if ( !
get_pcvar_num(d2_save_type) )
        {
            
Save_Dataid );
        }
        else
        {

            
MYSQLX_Save_Tid );
        }
    }
}

public 
plugin_precache()  
{
    
LoadIniItems();

    
engfunc(EngFunc_PrecacheSoundLevelUp);
    
engfunc(EngFunc_PrecacheSoundg_crossbow_shoot_sound);

    
engfunc(EngFunc_PrecacheModel"models/rpgrocket.mdl");

    
engfunc(EngFunc_PrecacheModelg_w_mp);
    
engfunc(EngFunc_PrecacheModelg_w_hp);
    
engfunc(EngFunc_PrecacheModelg_w_coins);
    
engfunc(EngFunc_PrecacheModelg_w_item);
    
engfunc(EngFunc_PrecacheModelg_w_inventory);
    
engfunc(EngFunc_PrecacheModelg_w_charsi);
    
engfunc(EngFunc_PrecacheModelg_w_akara);
    
engfunc(EngFunc_PrecacheModelg_brassknuckles);

    
engfunc(EngFunc_PrecacheModelg_w_crossbow);
    
engfunc(EngFunc_PrecacheModelg_v_crossbow);
    
engfunc(EngFunc_PrecacheModelg_p_crossbow);

    
// Forward to kill all entities :)
    
register_forward(FM_Spawn"fwd_Remove_Ents");

    for (new 
item_id 0item_id <= g_charcounteritem_id++)
    {
        if ( 
item_data[item_id][CHAR_TYPE] != TYPE_WEAPON )
            continue;
        
        if ( 
equal(item_vmodel[item_id], "models/"7) )
        {
            
engfunc(EngFunc_PrecacheModelitem_vmodel[item_id]);
        }

        if ( 
equal(item_pmodel[item_id], "models/"7) )
        {
            
engfunc(EngFunc_PrecacheModelitem_pmodel[item_id]);
        }
    }

    new 
Mdl_Path[100];

    for(new 
0MAX_HEROESi++)
    {
        
formatexMdl_Pathsizeof Mdl_Path 1"models/player/%s/%s.mdl"Custom_Models[i], Custom_Models[i])

        
engfunc(EngFunc_PrecacheModelMdl_Path);

        
formatexMdl_Pathsizeof Mdl_Path 1"models/player/%s/%sT.mdl"Custom_Models[i], Custom_Models[i])
        if ( 
file_existsMdl_Path ) )
        {
            
engfunc(EngFunc_PrecacheModelMdl_Path);
        }

    }
}

public 
plugin_cfg()
{
    
get_configsdir(g_ConfigsDir63);
    
formatex(g_ItemOriginDir63"%s/%s"g_ConfigsDirinventory_dir_name);

    new 
File[192];
    
    
formatexFilecharsmaxFile ), "%s/d2conf.cfg"g_ConfigsDir );
    
    if( !
file_existsFile ) )
    {
        
server_print"File %s doesn't exist!"File );
        
write_fileFile" ", -);
    }
    else
    {    
        
server_print"%s successfully loaded."File );
        
server_cmd"exec %s"File );
    }

    if( !
dir_exists(g_ItemOriginDir) ) 
    {
        
mkdir(g_ItemOriginDir);
    } 
    else 
    {
        new 
CurMap[32];
        
get_mapname(CurMap31);
        
Load_Origins(CurMap);
        
Load_Origins_Charsi(CurMap);
        
Load_Origins_Akara(CurMap);
    }

    
//Open our vault and have g_Vault store the handle.
    
g_Nvault nvault_open"d2lod" );
    
g_Nvault2 nvault_open"d2lod2" );
    
g_Nvault3 nvault_open"d2lod3" );
}

public 
plugin_end()
{
    
//Close the vault when the plugin ends (map change\server shutdown\restart)
    
nvault_closeg_Nvault );
    
nvault_closeg_Nvault2 );
    
nvault_closeg_Nvault3 );
}

public 
Float:native_get_current_speed(id)
{
    return 
Current_Speed[id];
}
public 
native_get_player_logged(id)
{
    return 
g_iLogged[id];
}
public 
native_get_p_xp(id)
{
    return 
g_PlayerXp[id][g_CurrentChar[id]];
}
public 
native_get_p_hero(id)
{
    return 
g_PlayerHero[id][g_CurrentChar[id]];
}
public 
native_get_p_level(id)
{
    return 
g_PlayerLevel[id][g_CurrentChar[id]];
}
public 
native_get_p_mana(id)
{
    return 
g_CurrentMana[id];
}
public 
native_get_p_vitality(id)
{
    return 
g_Vitality[id][g_CurrentChar[id]];
}
public 
native_set_p_vitality(idvalue)
{
    
g_Vitality[id][g_CurrentChar[id]] = value;
}
public 
native_get_p_gold_inventory(id)
{
    return 
g_CoinsInv[id][g_CurrentChar[id]];
}
public 
native_get_p_gold(id)
{
    return 
g_Coins[id][g_CurrentChar[id]];
}
public 
native_MAX_SKILLS_ACTIVE()
{
    return 
g_skillcounter 1;
}
public 
native_MAX_ITEMS_ACTIVE()
{
    return 
g_charcounter 1;
}
public 
bool:native_get_p_in_safezone(id)
{
    if ( !
is_user_alive(id) || DISTANCE_INVENTORY_PLAYER <= 0.0 ) return false;

    new 
Float:Porigin[3];
    
entity_get_vectoridEV_VEC_originPorigin);

    new 
ent = -1
    
while( (ent find_ent_in_sphereentPoriginDISTANCE_INVENTORY_PLAYER)) != 0
    {
        static 
classname[32];
        
peventpev_classnameclassnamecharsmax(classname) );

        if( 
equal(classname"Inventory") || equal(classname"Charsi")
        || 
equal(classname"Akara") )
        {
            return 
true;
        }
    }

    return 
false;
}
public 
bool:native_get_p_near_charsi(id)
{
    if ( !
is_user_alive(id) || DISTANCE_INVENTORY_PLAYER <= 0.0 ) return false;

    new 
Float:Porigin[3];
    
entity_get_vectoridEV_VEC_originPorigin);

    new 
ent = -1
    
while( (ent find_ent_in_sphereentPoriginDISTANCE_INVENTORY_PLAYER)) != 0
    {
        static 
classname[32];
        
peventpev_classnameclassnamecharsmax(classname) );

        if( 
equal(classname"Charsi") )
        {
            return 
true;
        }
    }

    return 
false;
}
public 
bool:native_get_p_near_akara(id)
{
    if ( !
is_user_alive(id) || DISTANCE_INVENTORY_PLAYER <= 0.0 ) return false;

    new 
Float:Porigin[3];
    
entity_get_vectoridEV_VEC_originPorigin);

    new 
ent = -1
    
while( (ent find_ent_in_sphereentPoriginDISTANCE_INVENTORY_PLAYER)) != 0
    {
        static 
classname[32];
        
peventpev_classnameclassnamecharsmax(classname) );

        if( 
equal(classname"Akara") )
        {
            return 
true;
        }
    }

    return 
false;
}
public 
bool:native_get_p_near_inventory(id)
{
    if ( !
is_user_alive(id) || DISTANCE_INVENTORY_PLAYER <= 0.0 ) return false;

    new 
Float:Porigin[3];
    
entity_get_vectoridEV_VEC_originPorigin);

    new 
ent = -1
    
while( (ent find_ent_in_sphereentPoriginDISTANCE_INVENTORY_PLAYER)) != 0
    {
        static 
classname[32];
        
peventpev_classnameclassnamecharsmax(classname) );

        if( 
equal(classname"Inventory") )
        {
            return 
true;
        }
    }

    return 
false;
}
public 
bool:native_is_p_protected(id)
{
    if ( 
g_PlayerProtected[id] )
        return 
true;
    
    return 
false;
}
public 
native_get_p_skill(idskill_id)
{
    return 
g_iSkills[id][g_CurrentChar[id]][skill_id];
}
public 
native_is_freezetime()
{
    return 
g_FreezeTime;
}
public 
native_get_p_item_count(iditem_id)
{
    return 
g_iPlayerItem[id][g_CurrentChar[id]][item_id];
}
public 
native_get_p_item_is_worn(iditem_id)
{
    return 
g_iPlayerItemWorn[id][g_CurrentChar[id]][item_id];
}
public 
native_get_p_maxhealth(id)
{
    return 
g_MaxHealth[id];
}
public 
native_set_p_maxhealth(idvalue)
{
    
g_MaxHealth[id] = value;

    if ( 
g_MaxHealth[id] < )
    {
        
g_MaxHealth[id] = 0;
    }
}
// Checks if is player near monster
public bool:native_get_p_near_monster(id)
{
    if ( !
is_user_alive(id) || DISTANCE_NEAR_MONSTER <= 0.0 ) return false;

    new 
Float:Porigin[3];
    
entity_get_vectoridEV_VEC_originPorigin);

    new 
ent = -1
    
while( (ent find_ent_in_sphereentPoriginDISTANCE_NEAR_MONSTER)) != 0
    {
        if ( 
peventpev_flags ) & FL_MONSTER )
        {
            return 
true;
        }
    }

    return 
false;




All times are GMT -4. The time now is 20:55.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.