Русское сообщество по скриптингу

Host_Error: WriteDest_Parm: not a client

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Host_Error: WriteDest_Parm: not a client

Сообщение wantip01 » 14 ноя 2016, 18:37

Здравствуйте. Сервер падает с ошибкой

Код: Выделить всё
FATAL ERROR (shutting down): Host_Error: WriteDest_Parm: not a client


Так вот искал в google, пишут что проблема в каком то из плагинов. Я начал ковырять исходники, но думаю что это из за этого плагина:

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <engine>
#include <hamsandwich>

#include <cssb/war3ft_natives.inc>
#include <cssb/stocks.inc>
#include <cssb/public.inc>
#include <cssb/constants.inc>
#include <cssb/effects.inc>
#include <cssb/messages.inc>

#define PLUGIN "CSSB [WC3] SVD-M203"
#define VERSION "1.1"
#define AUTHOR "CSSB"

#pragma semicolon 1

//Идентификаторы оружия
new idItemSVD;
new idItemNade;

//Сообщения
//Сообщения
new msgDeathMsg;

//Переменные спрайтов
new sprTrail;
new sprExplode;

//Переменные моделей
new mdlSVD_V[64] = "models/v_svdex.mdl";
new mdlSVD_P[64] = "models/p_svdex.mdl";
new mdlSVD_W[64] = "models/w_svdex.mdl";
new mdlNade[64] = "models/grenade.mdl";

//Переменные Cvar
new iCvarKnockBack, iCvarSpeed, iCvarRecoil,iCvarDmgMulti,iCvarTrail, iCvarRadius, iCvarDamage, iCvarReload, iCvarRemove, iCvarZoom, iCvarWeaponCost, iCvarM203Cost,iCvarItemLimitGun,iCvarM203Nade,iCvarOnOffItem;

//Константы
const iConstInReload = 54;

new Float:fZoomDelay[33];
new Float:cl_pushangle[33][3];

new bHasZoom[33];
new bIsSvd[33];
new bIsM203Loaded[33];

new iIsAmmo[33];
new iLimitSVD[33][33];
new iMaxPlayers;
new bool:bIsAlivePlayer[33];
//=============================================================================
//=============================================================================
//=============================================================================

//--------------------Встроенные функции--------------------BEGIN
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    
//Команды
    register_clcmd("drop","cssbCommandDropWeapons", 0);
    
    
//Регистрация переменных
    iCvarItemLimitGun = register_cvar("wc3_limit_svd", "0");
    iCvarKnockBack = register_cvar("wc3_svd_knock", "3");
    iCvarSpeed = register_cvar("wc3_svd_speed", "3.0");
    iCvarRecoil = register_cvar("wc3_svd_recoil", "0.2");
    iCvarDmgMulti = register_cvar("wc3_svd_dmg_multi", "1.0");
    iCvarTrail = register_cvar("wc3_svd_trail","1");
    iCvarRadius = register_cvar("wc3_svd_rad","200");  
    iCvarDamage 
= register_cvar("wc3_svd_dmg","140"); 
    iCvarReload 
= register_cvar("wc3_svd_reloadtime","3.0"); 
    iCvarRemove 
= register_cvar("wc3_svd_remove","0"); 
    iCvarZoom 
= register_cvar("wc3_svd_zoom", "1");
    iCvarWeaponCost = register_cvar("wc3_svd_cost", "2000");
    iCvarM203Cost = register_cvar("wc3_svd_m203_cost", "500");
    iCvarM203Nade = register_cvar("wc3_svd_m203_amount", "5");
    iCvarOnOffItem = register_cvar("wc3_svd_m203_on_off", "1");
    
        
    
//HAM Форварды
    RegisterHam(Ham_Spawn, "player", "fwPlayerSpawn");
    RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage");
    RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m4a1", "fwWeaponPrimaryAttack");
    RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m4a1", "fwWeaponPrimaryAttackPost",1);
    RegisterHam(Ham_Weapon_Reload, "weapon_m4a1", "fwWeaponReload");
    RegisterHam(Ham_Item_AddToPlayer, "weapon_m4a1", "fwWeaponPickup");
    RegisterHam(Ham_Killed, "player", "fwPlayerKilled");
        
    
//FM Форварды
    register_forward(FM_CmdStart, "fwCommandStart");
    register_forward(FM_SetModel, "fwSetModel");
    register_forward(FM_ClientDisconnect, "fwClientDisconnect");
    
    
//События    
    register_event("DeathMsg","evDeathMsg","a");
    register_event("CurWeapon","evCurrentWeapon","be","1=1");
    register_event("TextMsg", "evGameWillRestart", "a", "2=#Game_will_restart_in");
    
    
//Процедуры 'прикосновения'
    register_touch("m203_nade", "*", "m203_touch");
    
    
//Сообщения ID
    msgDeathMsg = get_user_msgid("DeathMsg");
    
    
//Регистрация предмета
    idItemSVD = wc3_register_extra_item("СВД",get_pcvar_num(iCvarWeaponCost),iCvarOnOffItem,1);
    idItemNade = wc3_register_extra_item("M203 Грены для СВД",get_pcvar_num(iCvarM203Cost),iCvarOnOffItem,1);

    //Количество игроков
    iMaxPlayers = get_maxplayers();
}

public plugin_precache()          
{
  sprTrail = precache_model("sprites/smoke.spr");
  sprExplode = precache_model("sprites/explode_nade.spr");
  precache_sound("weapons/svdex_shoot2.wav");
  precache_sound("weapons/svdex_exp.wav");
  precache_sound("weapons/svdex_shoot1.wav");
  precache_model(mdlSVD_V);
  precache_model(mdlSVD_P);
  precache_model(mdlSVD_W);
  precache_model(mdlNade);
}

public client_connect(idUser)      
{
  bIsSvd[idUser] = false;
  bIsM203Loaded[idUser] = true;
  iIsAmmo[idUser] = 1;
  iLimitSVD[idUser][idUser] = 0;
}
//--------------------Встроенные функции--------------------END
//=============================================================================
//=============================================================================
//=============================================================================

//--------------------Команды плагина--------------------BEGIN
public cssbCommandDropWeapons(idUser)
{
    if(bIsSvd[idUser] && bIsAlivePlayer[idUser]) 
    
{
        bIsSvd[idUser] = false;
        fRemoveGun(idUser,CSW_M4A1);
        setAmmoHud(idUser,0);
        iIsAmmo[idUser] = 0;
    }
}
//--------------------Команды плагина--------------------END
//=============================================================================
//=============================================================================
//=============================================================================

//--------------------Forwards--------------------BEGIN

public fw_ClientDisconnect(idUser)
{
    bIsAlivePlayer[idUser] = false;
}


public fwPlayerKilled(idVictim,idKiller, shouldgib)
{
    bIsAlivePlayer[idVictim] = false;
}
//Стрельба
public fwWeaponPrimaryAttack(ent)
{
    new idUser = pev(ent,pev_owner);
    pev(idUser,pev_punchangle,cl_pushangle[idUser]);
    
    return HAM_IGNORED
;
}
public fwWeaponPrimaryAttackPost(ent)
{
    new idUser = pev(ent,pev_owner);
    new clip, ammo;
    new weap = get_user_weapon( idUser, clip, ammo );
    if( weap == CSW_M4A1 && bIsSvd[idUser])
    {
        new Float:push[3];
        pev(idUser,pev_punchangle,push);
        xs_vec_sub(push,cl_pushangle[idUser],push);
        xs_vec_mul_scalar(push,get_pcvar_float(iCvarRecoil),push);
        xs_vec_add(push,cl_pushangle[idUser],push);
        set_pev(idUser,pev_punchangle,push);
        if( clip > 0)
        {
            ExecuteHamB(Ham_Weapon_PlayEmptySound, ent);
            emit_sound(idUser, CHAN_AUTO, "weapons/svdex_shoot1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
        }
    }    
              
    return HAM_IGNORED
;
}

//Перезарядка оружия
public fwWeaponReload(ent)
{
    new idUser = pev(ent, pev_owner);
    new button = pev(idUser, pev_button);
    
    if
(bIsSvd[idUser] && bHasZoom[idUser] && button&IN_RELOAD)
    {
        bHasZoom[idUser] = false;
        cs_set_user_zoom(idUser, CS_RESET_ZOOM, 0);
        
    
}
    return HAM_IGNORED;
}
//Игрок поднимает оружие с земли
public fwWeaponPickup(svd, idUser)
{
    if( is_valid_ent(svd) && is_user_connected(idUser) && entity_get_int(svd, EV_INT_impulse) == 1995)
    {
        // Update
        bIsSvd[idUser] = true;
        setAmmoHud(idUser, 1);
        
        
// BP ammo
        cs_set_user_bpammo(idUser, CSW_M4A1, 90);
        
        
// Reset weapon options
        entity_set_int(svd, EV_INT_impulse, 0);
        
        return HAM_HANDLED
;
    }
    
    return HAM_IGNORED
;
}

//Срабатывает когда игрок нажимает кнопки (в данном случае Attack2 или E)
public fwCommandStart(idUser, uc_handle, seed)
{
    if(is_user_alive(idUser) && get_user_weapon(idUser) == CSW_M4A1 && bIsSvd[idUser])
    {
        //set button , entity,...
        new button = get_uc(uc_handle, UC_Buttons);
        new ent = find_ent_by_owner(-1, "weapon_m4a1", idUser);
        new fInReload = get_pdata_int(ent, iConstInReload, 4);
        //if player press Attack2...
        if(entity_get_int(idUser, EV_INT_button) & IN_ATTACK2)
        {
            //lauch it...
             setLaunchNade(idUser);
            return FMRES_IGNORED;
         }
        //when player press key E 
        if (button & IN_USE)
         {
            set_pev(idUser, pev_button, button &~ IN_USE);
            //set zoom delay 
            if (get_gametime() - fZoomDelay[idUser] >= 0.5  && !fInReload && get_pcvar_num(iCvarZoom))
            {
                //is zooming...
                if (bHasZoom[idUser])
                {
                    //erser it...
                    bHasZoom[idUser] = false;
                    cs_set_user_zoom(idUser, CS_RESET_ZOOM, 0);
                }
                else
                
{
                    bHasZoom[idUser] = true;
                    cs_set_user_zoom(idUser, CS_SET_AUGSG552_ZOOM, 0);
                }
                
                fZoomDelay
[idUser] = get_gametime();
            }
        }
    }
    return FMRES_IGNORED;
}
              
//Повреждения
public fwTakeDamage(victim, inflictor, attacker, Float:damage)
{
    if ( is_user_alive( attacker ) && get_user_weapon(attacker) == CSW_M4A1 && bIsSvd[attacker] )
    {
        SetHamParamFloat(4, damage * get_pcvar_float( iCvarDmgMulti ) );
    }
}

// Создание W класса модели для оружия
public fwSetModel(Entity, const Model [])
{
    // Entity is not valid
    if (!is_valid_ent(Entity))
        return FMRES_IGNORED;
        
    
// Not m4a1
    if(!equal(Model, "models/w_m4a1.mdl")) 
        return FMRES_IGNORED
;
        
    
// Get classname
    static szClassName[33];
    entity_get_string(Entity, EV_SZ_classname, szClassName, charsmax(szClassName));
        
    
// Not a Weapon box
    if ( !equal ( szClassName, "weaponbox" ) )
        return FMRES_IGNORED;
    
    
// Some vars
    static iOwner, iStoredAkID;
    
    
// Get owner
    iOwner = entity_get_edict(Entity, EV_ENT_owner);
    
    
// Get drop weapon index
    iStoredAkID = find_ent_by_owner(-1, "weapon_m4a1", Entity);
    
    
// Entity classname is weaponbox, and m4a1 was founded
    if(bIsSvd[iOwner] && is_valid_ent(iStoredAkID))
    {
        // Setting weapon options
        entity_set_int(iStoredAkID, EV_INT_impulse, 1995);
                
        
// Reset user vars
        bIsSvd [ iOwner ] = false;
        setAmmoHud(iOwner, 0);
                
        entity_set_model
(Entity, mdlSVD_W);
        
        return FMRES_SUPERCEDE
;
    }
    
    return FMRES_IGNORED
;
}
// Игрок появился в игре (респаунился)
public fwPlayerSpawn(idUser)
{
    if ( get_pcvar_num(iCvarRemove) == 1 &&  bIsSvd[idUser] )
    {
        setAmmoHud(idUser,0);
        bIsSvd[idUser] = false;
        iIsAmmo[idUser] = 0;           
    
}
    
    bIsAlivePlayer
[idUser] = true;
}
//--------------------Forwards--------------------END
//=============================================================================
//=============================================================================
//=============================================================================

//--------------------Вызов Natives--------------------BEGIN
//wc3_register_extra_item
public wc3_extra_item_selected(idUser, idItemSelected) 
{
    if(get_pcvar_num(iCvarItemLimitGun) != 0)
        if(iLimitSVD[idUser][idUser] == get_pcvar_num(iCvarItemLimitGun))
            return;
        
    if 
(idItemSelected == idItemNade)
    {
        if(!bIsSvd[idUser])
            return;
        
        setAmmoHud
(idUser,0);
        iIsAmmo[idUser] += get_pcvar_num(iCvarM203Nade);
        setAmmoHud(idUser,1);
    }

    if(idItemSelected == idItemSVD)
    {    
        if
(bIsSvd[idUser] && user_has_weapon(idUser, CSW_M4A1))
            return;

        fRemoveGun(idUser,CSW_M4A1);
        
        fm_give_item
(idUser,"weapon_m4a1");
        bIsSvd[idUser] = true;
        iIsAmmo[idUser] = get_pcvar_num(iCvarM203Nade);
        setAmmoHud(idUser,1);
        cs_set_user_bpammo(idUser, CSW_M4A1, 90);
                
        iLimitSVD
[idUser][idUser] += 1;
    }    
}  
//--------------------Вызов Natives--------------------END
//=============================================================================
//=============================================================================
//=============================================================================

//--------------------События--------------------BEGIN
//Рестарт игры
public evGameWillRestart()
 { 
    static iPlayers
[32], iPlayersNum, i; 
    get_players
(iPlayers, iPlayersNum, "a") ;
    for (= 0; i <= iPlayersNum; ++i) 
    
{
        bIsSvd[iPlayers[i]] = false;
        iLimitSVD[iPlayers[i]][iPlayers[i]] = 0;
    }
}

//Срабатывает когда игрок умирает
public evDeathMsg(idUser)        
{
    new idUser = read_data(2);
    
    if
(bIsSvd[idUser] && !bIsAlivePlayer[idUser] && !is_user_bot(idUser)) 
    
{
        fRemoveGun(idUser,CSW_M4A1);
        bIsSvd[idUser] = false;
        setAmmoHud(idUser,0);
        iIsAmmo[idUser] = 0;
    }
    
    return PLUGIN_CONTINUE
;
}

public evCurrentWeapon(idUser)
{
    new plrClip, plrAmmo, plrWeapId;
    plrWeapId = get_user_weapon(idUser, plrClip , plrAmmo);
        
    if 
(plrWeapId == CSW_M4A1 && bIsSvd[idUser])
    {
        setCheckModelWeapon(idUser);
        
        new Ent 
= stGetWeaponEntity(idUser,plrWeapId);
        new Float:N_Speed;
        if(Ent) 
        
{
            N_Speed = get_pcvar_float(iCvarSpeed);
            new Float:Delay = get_pdata_float( Ent, 46, 4) * N_Speed;
            if (Delay > 0.0) 
            
{
                set_pdata_float( Ent, 46, Delay, 4);
            }
        }
    }
    else 
    
{
        return PLUGIN_CONTINUE;
    }

    return PLUGIN_HANDLED;
}

//--------------------События--------------------END
//=============================================================================
//=============================================================================
//=============================================================================

//--------------------Вспомогательные функции--------------------BEGIN
//Установка P и W модели
public setCheckModelWeapon(idUser)
{
    new g_weapon = read_data(2);
    
    if 
( g_weapon == CSW_M4A1 && bIsSvd[idUser])
    {
        set_pev(idUser, pev_viewmodel2, mdlSVD_V);
        set_pev(idUser, pev_weaponmodel2, mdlSVD_P);
    }
    return PLUGIN_HANDLED;
}
//--------------------Вспомогательные функции--------------------END
//=============================================================================
//=============================================================================
//=============================================================================   
  
//--------------------Функции для гранат M203--------------------BEGIN
//Выстрел гранатой
public setLaunchNade(idUser)
{
    if(is_user_bot(idUser))
        return PLUGIN_CONTINUE;
    
    if
(bIsSvd[idUser] == 0 || bIsM203Loaded[idUser] == 0 || !(is_user_alive(idUser)))
    return PLUGIN_CONTINUE;

    if(iIsAmmo[idUser] == 0)
    {
        format(szMessage, charsmax(szMessage), "%L",LANG_PLAYER,"WC3SHM_SVD_1");
        client_print(idUser, print_center, szMessage);
        return PLUGIN_CONTINUE;
    }

    entity_set_int(idUser, EV_INT_weaponanim, 3);

    new Float: Origin[3], Float: Velocity[3], Float: vAngle[3], Ent;

    entity_get_vector(idUser, EV_VEC_origin , Origin);
    entity_get_vector(idUser, EV_VEC_v_angle, vAngle);

    Origin[2] = Origin[2] + 10;

    Ent = create_entity("info_target");

    if (!Ent) 
    return PLUGIN_HANDLED
;

    //set weapon classname
    entity_set_string(Ent, EV_SZ_classname, "m203_nade");
    //set Nade model for weapon:D
    entity_set_model(Ent, mdlNade);

    //set size
    new Float:MinBox[3] = {-1.0, -1.0, -1.0};
    new Float:MaxBox[3] = {1.0, 1.0, 1.0};
    //size
    entity_set_vector(Ent, EV_VEC_mins, MinBox);
    entity_set_vector(Ent, EV_VEC_maxs, MaxBox);

    //set origin & vector...
    entity_set_origin(Ent, Origin);
    entity_set_vector(Ent, EV_VEC_angles, vAngle);

    entity_set_int(Ent, EV_INT_effects, 2);
    entity_set_int(Ent, EV_INT_solid, 1);
    entity_set_int(Ent, EV_INT_movetype, 10);
    entity_set_edict(Ent, EV_ENT_owner, idUser);

    VelocityByAim(idUser, 2500 , Velocity);
    entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
    //sound when lauch...
    emit_sound(idUser,CHAN_VOICE,"weapons/svdex_shoot2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);

    bIsM203Loaded[idUser] = false;

    setAmmoHud(idUser,0);
    iIsAmmo[idUser]--;
    setAmmoHud(idUser,1);

    new parm[1];
    parm[0] = Ent;

    if(get_pcvar_num(iCvarTrail))
    set_task(0.2, "setGrenadeTrail",idUser,parm,1);

    parm[0] = idUser;

    set_task(get_pcvar_float(iCvarReload), "m203_reload",idUser+9910,parm,1);
    
    format
(szMessage, charsmax(szMessage), "%L",LANG_PLAYER,"WC3SHM_SVD_2");
    client_print(idUser, print_center,szMessage);

    return PLUGIN_CONTINUE;
}

//Перезарядка гранаты
public m203_reload(parm[])
{
  
  bIsM203Loaded
[parm[0]] = true;
}

//Когда граната прикосается чего либо
public m203_touch(Nade, Other)
{
    if(!pev_valid(Nade))
        return 0;
        
    
// Get it's origin
    static Float:origin[3];
    pev(Nade, pev_origin, origin);
        
    stShowExplosion2
(origin, sprExplode, 40, 30, 0 );

    // Owner
    static owner;
    owner = pev(Nade, pev_owner);    
    
    if
(!is_user_connected(owner) || owner < 1 || owner > 32) return 0;
    
    
// Make a loop
    for(new i = 1; i < iMaxPlayers;i++)
    {
        //not alive
        // if (!is_user_alive(i) || !is_user_connected(i) || i < 1 || i > 32)
        if (!is_user_alive(i) || !pev_valid(i))
              continue;

        if( get_user_team(i) == get_user_team(owner) && i!=owner)
            continue;
            
        
// Godmode
        if (get_user_godmode(i))
            continue;
                
        
// Get victims origin
        static Float:origin2 [3];
        pev(i, pev_origin, origin2);
        
        
// Get distance between those origins
        static Float:distance_f;
        distance_f = get_distance_f(origin, origin2);
        
        
// Convert distnace to non-float
        static distance;
        distance = floatround(distance_f);
        
        
// Radius
        static radius;
        radius = get_pcvar_num(iCvarRadius);
        
        
// We are in damage radius
        if ( distance <= radius )
        {
            
            
// Max damage
            static maxdmg;
            maxdmg = get_pcvar_num(iCvarDamage);
            
            
// Normal dmg
            new Damage;
            Damage = maxdmg - floatround(floatmul(float(maxdmg), floatdiv(float(distance), float(radius))));

            //set damage when touch buy Ham ExecuteHamB(Ham_TakeDamage, victim, inflictor, attacker, Float:damage, damagebits)
            
            ExecuteHamB
(Ham_TakeDamage, i, "grenade", owner,Damage, DMG_BLAST);
            //explode sound
            emit_sound(owner,CHAN_VOICE,"weapons/svdex_exp.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
            
            
// Calculate health
            new health = get_user_health(i);
            
            
// We have at least 1 hp
            if(health - Damage >= 1)
            {
                // New health
                set_user_health(i, health - Damage); 
                setMakeKnockBack
(i, origin, get_pcvar_float(iCvarKnockBack) * Damage);
            }
            else
            
{
                setDeathMessageM203(owner,i,"grenade",1);
                
                
// I hope they'll not find the bodies....
                origin2 [ 2 ] -= 45.0;
            }
        }
    }
    
    
// Breakable
    static ClassName[32];
    pev(Other, pev_classname, ClassName, charsmax(ClassName));
    if(equal(ClassName,"func_breakable"))
    {
        // Entity health
        static Float:health;
        health = entity_get_float(Other, EV_FL_health);
        
        if 
(health <= get_pcvar_num(iCvarDamage))
        {
            // Break it
            force_use(owner, Other);
        }
    }
    
    
// Remove grenade
    engfunc(EngFunc_RemoveEntity, Nade); return 0;
}

// Когда убивает с гранаты
public setDeathMessageM203(idKiller, idVictim, const Weapon[], ScoreBoard)
{
    //Блокировка сообщения смерти
    set_msg_block(msgDeathMsg, BLOCK_SET);
    ExecuteHamB(Ham_Killed, idVictim, idKiller, 2);
    set_msg_block(msgDeathMsg, BLOCK_NOT);
    
    
// Смерть
    make_deathmsg(idKiller, idVictim, 0, Weapon);
    
    
// Обновление очков
    if ( ScoreBoard )
    {
        if(!is_user_bot(idKiller))
            stShowScoreInfo(idKiller,pev(idKiller, pev_frags),cs_get_user_deaths(idKiller),0,get_user_team(idKiller) );
        if(!is_user_bot(idVictim))
            stShowScoreInfo(idVictim,pev(idVictim, pev_frags),cs_get_user_deaths(idVictim),0,get_user_team(idVictim) );
                
    
}
    
}

//Отображение количества гранат в обойме 
setAmmoHud(idUser, sw)
{
    if(is_user_bot(idUser))
        return;
    
    new s_sprite
[33];
    format(s_sprite,32,"number_%d",iIsAmmo[idUser]);
  
    if
(sw)
        stShowStatusIcon(idUser, ICON_SHOW, s_sprite, 0, 150, 0);
    else
        stShowStatusIcon
(idUser, ICON_HIDE, s_sprite, 0, 150, 0);
}

//След
public setGrenadeTrail(parm[])
{
  new idEntity = parm[0];

  if (idEntity) 
    stShowTrailGrenade
(idEntity, sprTrail, 10, 5, 255,255,255,100);

}

//Отбрасывание от гранаты
public setMakeKnockBack ( Victim, Float:origin [ 3 ], Float:maxspeed )
{
    //Считывание и установка скорости
    new Float:fVelocity[3];
    stSetKickBack ( Victim, origin, maxspeed, fVelocity);
    entity_set_vector( Victim, EV_VEC_velocity, fVelocity);

    return (1);
}
//--------------------Функции для гранат M203--------------------END
//=============================================================================
//=============================================================================
//=============================================================================   


Посмотрите пожалуйста есть ли тут ошибки, что этот плагин может ронять сервер.

Перенесено в раздел "Вопросы по AMXX и его плагинам" // liFe iS GoOD
Аватара пользователя
wantip01
 
Сообщения: 68
Зарегистрирован: 14 авг 2016, 15:53
Благодарил (а): 7 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Host_Error: WriteDest_Parm: not a client

Сообщение Chuvi » 14 ноя 2016, 18:59

Интересное предложение. Проверять его я, конечно же, не буду.

Ты не с того начал, нужно не исходники плагинов ковырять, а для начала найти, при каком условии сервер выдаёт это сообщение.

А выдаёт он это при вызове message_end, если в message_begin был указан неправильный клиент при MSG_ONE_UNRELIABLE или MSG_ONE.

Воо. Теперь можно искать, что вызывает message_begin. В твоём коде я прямых вызовов не вижу, возможно есть косвенные, аля вывод сообщений в чат и прочее, но там, скорее всего, соответствующие проверки уже есть.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Host_Error: WriteDest_Parm: not a client

Сообщение wantip01 » 14 ноя 2016, 19:26

Да, нужна проверка на коннект. Чтобы индекс соответствовал условию и аргументу.
Аватара пользователя
wantip01
 
Сообщения: 68
Зарегистрирован: 14 авг 2016, 15:53
Благодарил (а): 7 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

cron