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

Hats. Сервер не падает, но шапка не появляется

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Hats. Сервер не падает, но шапка не появляется

Сообщение bodyajoy » 02 мар 2017, 12:42

Компилируется, но шапка (плащ) в игре не появляется. Кто подскажет в чем ошибка?

+я писал с плагина changel models for amx-x.ru
Он тоже не работает
пароль ввожу, все норм, все модели закачаны. Никаких ошибок, просто модель не меняется

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

#pragma semicolon 1

#define PLUGIN "ChangeHat"
#define VERSION "1.0"
#define AUTHOR "bodyajoy"

#define CS_TEAM_T 1
#define CS_TEAM_CT 2

new const g_Library[][] = {"""/addons/amxmodx/configs/hats.ini""_mdl""Неверный пароль"};
new 
g_bwEnt[33];
new 
g_CachedStringInfoTarget;
new 
szInfoPlayerModelCt[33], szInfoPlayerModelTt[33],
szAccessUser[33];

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
RegisterHam(Ham_Spawn"id""fwHamPlayerSpawnPost"1);
    
g_CachedStringInfoTarget engfuncEngFunc_AllocString"info_target" );
}

public 
plugin_precache()
{
    new 
szInfo[256], szInfoPrecache[128], 
    
szInfoUser[32], szInfoUserPassword[32], 
    
szInfoModelCt[64], szInfoModelTt[64], 
    
iNum;
    
    for(new 
iLine 0read_file(g_Library[1], iLineszInfocharsmax(szInfo), iNum); iLine++) 
    {
        if(
iNum && szInfo[0] != ';')
        {
            
parse(szInfoszInfoUsercharsmaxszInfoUser ), 
            
szInfoUserPasswordcharsmax(szInfoUserPassword), 
            
szInfoModelCtcharsmax(szInfoModelCt),
            
szInfoModelTtcharsmax(szInfoModelTt)
            );
            
            
formatex(szInfoPrecachecharsmax(szInfoPrecache), "models/caps/%s.mdl"szInfoModelCtszInfoModelCt);
            
precache_model(szInfoPrecache);
            
formatex(szInfoPrecachecharsmax(szInfoPrecache), "models/caps/%s.mdl"szInfoModelTtszInfoModelTt);
            
precache_model(szInfoPrecache);
        }
    }
}

public 
client_connect(id)
{
    
set_task(0.5"CheckPlayerInfo"id);
    
szAccessUser[id] = false;
    
szInfoPlayerModelCt[id] = false;
    
szInfoPlayerModelTt[id] = false;
}

public 
client_infochanged(id)
{
    
set_task(0.5"CheckPlayerInfo"id);
    
szAccessUser[id] = false;
    
szInfoPlayerModelCt[id] = false;
    
szInfoPlayerModelTt[id] = false;
}

public 
CheckPlayerInfo(id)
{    
    new 
szInfo[256], szName[32], 
    
szSteam[32], szIP[32], 
    
szPassword[32], szInfoUser[32], 
    
szInfoUserPassword[32], szInfoModelCt[64], 
    
szInfoModelTt[64], iNum;
    
    if (!
is_user_connected(id))
        return 
0;
        
    
get_user_name(idszNamecharsmax(szName));
    
get_user_authid(idszSteamcharsmax(szSteam));
    
get_user_ip(idszIPcharsmax(szIP), 1);
    
    for(new 
iLine 0read_file(g_Library[1], iLineszInfocharsmax(szInfo), iNum); iLine++) 
    {
        if(
iNum && szInfo[0] != ';')
        {
            
parse(szInfoszInfoUsercharsmaxszInfoUser ),
            
szInfoUserPasswordcharsmax(szInfoUserPassword),
            
szInfoModelCtcharsmax(szInfoModelCt), 
            
szInfoModelTtcharsmax(szInfoModelTt)
            );

            if (
equal(szNameszInfoUser))
            {
                
get_user_info(idg_Library[2], szPasswordcharsmax(szPassword));
                
                if(!
equal(szInfoUserPasswordszPassword))
                    return 
server_cmd("kick %s ^"%s^""szNameg_Library[3]);
                
                
copy(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                
copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                
szAccessUser[id] = true;
                break;
            }
            else if (
equal(szSteamszInfoUser))
            {                
                
copy(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                
copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                
szAccessUser[id] = true;
                break;
            }
            else if (
equal(szIPszInfoUser))
            {
                
copy(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                
copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                
szAccessUser[id] = true;
                break;
            }
        }
    }
    return 
1;
}

public 
fwHamPlayerSpawnPost( const id ) {
    if (
szAccessUser[id]) {    
        new 
iTeam get_user_team(id);
        new 
iEnt g_bwEntid ];
        if (!
pev_valid(iEnt)) {
            switch(
iTeam)
            {
                case 
CS_TEAM_T: {
                    
g_bwEntid ] = iEnt engfunc EngFunc_CreateNamedEntityg_CachedStringInfoTarget );
                    
set_peviEntpev_movetypeMOVETYPE_FOLLOW );
                    
set_peviEntpev_aimentid );
                    
engfuncEngFunc_SetModeliEntszInfoPlayerModelTt[id] );
                }
                case 
CS_TEAM_CT: {
                    
g_bwEntid ] = iEnt engfunc EngFunc_CreateNamedEntityg_CachedStringInfoTarget );
                    
set_peviEntpev_movetypeMOVETYPE_FOLLOW );
                    
set_peviEntpev_aimentid );
                    
engfuncEngFunc_SetModeliEntszInfoPlayerModelCt[id] );
                }
            
            }
        }
    }
    return 
PLUGIN_CONTINUE;
Последний раз редактировалось Subb98 02 мар 2017, 14:42, всего редактировалось 1 раз.
Причина: исходный код необходимо оформлять при помощи кнопки "Код / Исходник"
Аватара пользователя
bodyajoy
 
Сообщения: 6
Зарегистрирован: 22 фев 2017, 16:56
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Hats. Сервер не падает, но шапка не появляется

Сообщение NEoMASTERR » 02 мар 2017, 13:47

Код под тег
Код: Выделить всё
[code=php][/code]

Отладку делали?

Цель написания плагинов это поставить себя автором в чужом коде
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Hats. Сервер не падает, но шапка не появляется

Сообщение bodyajoy » 03 мар 2017, 01:13

NEoMASTERR писал(а):Код под тег
Код: Выделить всё
[code=php][/code]

Отладку делали?


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

#pragma semicolon 1

#define PLUGIN "ChangeModel (free) for amx-x.ru"
#define VERSION "1.0"
#define AUTHOR "Pain96"

#define CS_TEAM_T 1
#define CS_TEAM_CT 2
new g_bwEnt[33];
new g_CachedStringInfoTarget;

//                                путь/имя конфигурационного файла; префикс в качестве ключа для setinfo, содержащий пароль; причина кика, если пароль не совпадает
new const g_Library[][] = {"", "/addons/amxmodx/configs/hats.ini", "_mdl", "Неверный пароль"};

new szInfoPlayerModelCt[33], szInfoPlayerModelTt[33],
szAccessUser[33];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_event("ResetHUD", "ChangeModel", "b");
    g_CachedStringInfoTarget = engfunc( EngFunc_AllocString, "info_target" );
}

public plugin_precache()
{
    new szInfo[256], szInfoPrecache[128], 
    szInfoUser
[32], szInfoUserPassword[32], 
    szInfoModelCt
[64], szInfoModelTt[64], 
    iNum
;
    
    for
(new iLine = 0; read_file(g_Library[1], iLine, szInfo, charsmax(szInfo), iNum); iLine++) 
    
{
        if(iNum && szInfo[0] != ';')
        {
            parse(szInfo, szInfoUser, charsmax( szInfoUser ), 
            szInfoUserPassword
, charsmax(szInfoUserPassword), 
            szInfoModelCt
, charsmax(szInfoModelCt),
            szInfoModelTt, charsmax(szInfoModelTt)
            );
            
            formatex
(szInfoPrecache, charsmax(szInfoPrecache), "models/caps/%s.mdl", szInfoModelCt, szInfoModelCt);
            precache_model(szInfoPrecache);
            formatex(szInfoPrecache, charsmax(szInfoPrecache), "models/caps/%s.mdl", szInfoModelTt, szInfoModelTt);
            precache_model(szInfoPrecache);
        }
    }
}

public client_connect(id)
{
    set_task(0.5, "CheckPlayerInfo", id);
    szAccessUser[id] = false;
    szInfoPlayerModelCt[id] = false;
    szInfoPlayerModelTt[id] = false;
}

public client_infochanged(id)
{
    set_task(0.5, "CheckPlayerInfo", id);
    szAccessUser[id] = false;
    szInfoPlayerModelCt[id] = false;
    szInfoPlayerModelTt[id] = false;
}

public CheckPlayerInfo(id)
{
    
    new szInfo
[256], szName[32], 
    szSteam
[32], szIP[32], 
    szPassword
[32], szInfoUser[32], 
    szInfoUserPassword
[32], szInfoModelCt[64], 
    szInfoModelTt
[64], iNum;
    
    if 
(!is_user_connected(id))
        return 0;
        
    get_user_name
(id, szName, charsmax(szName));
    get_user_authid(id, szSteam, charsmax(szSteam));
    get_user_ip(id, szIP, charsmax(szIP), 1);
    for(new iLine = 0; read_file(g_Library[1], iLine, szInfo, charsmax(szInfo), iNum); iLine++) 
    
{
        if(iNum && szInfo[0] != ';')
        {
            parse(szInfo, szInfoUser, charsmax( szInfoUser ),
            szInfoUserPassword, charsmax(szInfoUserPassword),
            szInfoModelCt, charsmax(szInfoModelCt), 
            szInfoModelTt
, charsmax(szInfoModelTt)
            );

            if (equal(szName, szInfoUser))
            {
                get_user_info(id, g_Library[2], szPassword, charsmax(szPassword));
                
                if
(!equal(szInfoUserPassword, szPassword))
                    return server_cmd("kick %s ^"%s^"", szName, g_Library[3]);
                
                copy
(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                szAccessUser[id] = true;
                break;
            }
            else if (equal(szSteam, szInfoUser))
            {                
                copy
(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                szAccessUser[id] = true;
                break;
            }
            else if (equal(szIP, szInfoUser))
            {
                copy(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                szAccessUser[id] = true;
                break;
            }
        }
    }
    return 1;
}

public ChangeModel(id, level, cid)
{
    if (szAccessUser[id])
    {
        new iEnt = g_bwEnt[ id ];
        new iTeam = get_user_team(id);
        server_print("ffff");
        switch(iTeam)
        {
            case CS_TEAM_T: {
                if( !pev_valid(iEnt)){
                    g_bwEnt[ id ] = iEnt = engfunc ( EngFunc_CreateNamedEntity, g_CachedStringInfoTarget );
                    set_pev( iEnt, pev_movetype, MOVETYPE_FOLLOW );
                    set_pev( iEnt, pev_aiment, id );
                    engfunc( EngFunc_SetModel, iEnt, szInfoPlayerModelTt[id] );
                }
            }
            case CS_TEAM_CT: {
                if( !pev_valid(iEnt)){
                    g_bwEnt[ id ] = iEnt = engfunc ( EngFunc_CreateNamedEntity, g_CachedStringInfoTarget );
                    set_pev( iEnt, pev_movetype, MOVETYPE_FOLLOW );
                    set_pev( iEnt, pev_aiment, id );
                    engfunc( EngFunc_SetModel, iEnt, szInfoPlayerModelTt[id] );
                }
            }
        }
    }
    return 0;
}


Стандартный плагин (который за модели отвечает, меняет модель почему-то на втором раунде только)
Тут, компилируется, модель загружается. Но когда человек умирает, сервер крашится с фразой Host_error: no precache cowboy (так называлась шапка)

Помогите плиз дописать плагин.
Аватара пользователя
bodyajoy
 
Сообщения: 6
Зарегистрирован: 22 фев 2017, 16:56
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Hats. Сервер не падает, но шапка не появляется

Сообщение Subb98 » 03 мар 2017, 09:22

bodyajoy, просто используйте рабочий плагин.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Hats. Сервер не падает, но шапка не появляется

Сообщение bodyajoy » 03 мар 2017, 12:03

Subb98 писал(а):bodyajoy, просто используйте рабочий плагин.

Разве есть плагин загрузки шапок для пользователей из списка? (типа "name" "pass123" model" "model")
Я такого не нашел и пытаюсь нашаманить как-то сам, а не получается((
Аватара пользователя
bodyajoy
 
Сообщения: 6
Зарегистрирован: 22 фев 2017, 16:56
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#


Вернуться в Скриптинг

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

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