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

Регистрация зомби класса

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

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

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

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

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

Регистрация зомби класса

Сообщение snebars » 09 янв 2022, 20:03

Всем привет! Столкнулся с проблемкой и никак не могу ее решить... Идея плагина в том, что в ini файле указываешь сколько зомби тебе надо(там с модельками и т.п). Плагин читает из ini файла и регистрирует то кол-во зомби, скок их написано в ini. Мучаюсь уже 6 часов, в инете инфы не нашел (или плохо искал). Ошибка все время в 1 аргументе (где идет сама регистрация класса). Подскажите , пожалуйста, где накосячил? Заранее спасибо!

Исходник
Код: Выделить всё
#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <zombieplague>

new Array:ZombieClassName
new Array
:ZombieClassInfo
new Array
:ZombieClassModel
new Array
:ZombieClassClawModel
new Array
:ZombieClassHealth
new Array
:ZombieClassSpeed
new Array
:ZombieClassGravity
new Array
:ZombieClassKnockback
new Array
:ZombieClassFlags
new g_zombies_config_file
[] = "addons/amxmodx/configs/list_of_zombies.ini"
new g_zombie_size
new zombie_name
public plugin_precache
()
{
    register_plugin("[ZP] List Zombie", "1.0", "Robert7791")
    
    ZombieClassName 
= ArrayCreate(128);
    ZombieClassInfo = ArrayCreate(128);
    ZombieClassModel = ArrayCreate(128);
    ZombieClassClawModel = ArrayCreate(128);
    ZombieClassHealth = ArrayCreate(128);
    ZombieClassSpeed = ArrayCreate(128);
    ZombieClassGravity = ArrayCreate(128);
    ZombieClassKnockback = ArrayCreate(128);
    ZombieClassFlags = ArrayCreate(128);
    
    load_zombies_from_file
() //загружаем из файла
        if (g_zombie_size == 0)
    {
        log_amx("[ZL] Не загружено ни одного зомби!")
        pause("ad")
    }
    //Получаем список зомби и данные из файла
    new szBuffer[128]
    new i
    for 
(= 0; i < g_zombie_size; i++)
    {
        ArrayGetString(ZombieClassName, i, szBuffer, charsmax(szBuffer))
        ArrayGetString(ZombieClassInfo, i, szBuffer, charsmax(szBuffer))
        ArrayGetString(ZombieClassModel, i, szBuffer, charsmax(szBuffer))
        ArrayGetString(ZombieClassClawModel, i, szBuffer, charsmax(szBuffer))
        ArrayGetString(ZombieClassHealth, i, szBuffer, charsmax(szBuffer))
        ArrayGetString(ZombieClassSpeed, i, szBuffer, charsmax(szBuffer))
        ArrayGetString(ZombieClassGravity, i, szBuffer, charsmax(szBuffer))
        ArrayGetString(ZombieClassKnockback, i, szBuffer, charsmax(szBuffer))
        ArrayGetString(ZombieClassFlags, i, szBuffer, charsmax(szBuffer))
    }

    zp_register_zombie_class(ZombieClassName, ZombieClassInfo, ZombieClassModel, ZombieClassHealth, ZombieClassSpeed, ZombieClassGravity, ZombieClassKnockback)
}



public load_zombies_from_file()
{
    if(!file_exists(g_zombies_config_file))
    {
        log_amx("[KS] Файл %s не найден.", g_zombies_config_file)
        pause("ad")
    }

    new linedata[1024], key[128], value[128]
    new file = fopen(g_zombies_config_file, "rt")

    while (file && !feof(file))
    {
        // Read one line at a time
        fgets(file, linedata, charsmax(linedata))

        // Replace newlines with a null character to prevent headaches
        replace(linedata, charsmax(linedata), "^n", "")

        trim(linedata)

        if (!linedata[0] || equali(linedata, "") || strlen(linedata) == 0 || linedata[0] == ';' || linedata[0] == '[')
            continue;

        strtok(linedata, key, charsmax(key), value, charsmax(value), '=')

        trim(key)
        trim(value)

        if (equali(key, "NAME"))
            ArrayPushString(ZombieClassName, value)
        else if (equali(key, "INFO"))
            ArrayPushString(ZombieClassInfo, value)
        else if (equali(key, "MODELS"))
            ArrayPushString(ZombieClassModel, value)
        else if (equali(key, "CLAWMODEL"))
            ArrayPushString(ZombieClassClawModel, value)
        else if (equali(key, "HEALTH"))
            ArrayPushString(ZombieClassHealth, value)
        else if (equali(key, "SPEED"))
            ArrayPushString(ZombieClassSpeed, value)
        else if (equali(key, "GRAVITY"))
            ArrayPushString(ZombieClassGravity, value)
        else if (equali(key, "KNOCKBACK"))
            ArrayPushString(ZombieClassKnockback, value)
        else if (equali(key, "FLAG"))
            ArrayPushString(ZombieClassFlags, value)

    }

    if (file) 
        fclose
(file)

    g_zombie_size = ArraySize(ZombieClassName)
}


Сам ини файл
Код: Выделить всё
; List of Zombies 1.0 By Robert7791
[Зомби класс]
NAME = - Test -
INFO = \r[Balance\r]
MODELS = reclassicphm
CLAWMODEL 
= v_knife_zombie_lj.mdl
HEALTH 
= 3200
SPEED 
= 270
GRAVITY 
= 0.70
KNOCKBACK 
= 0.50
FLAG 
= 
[Зомби класс 2]
NAME = - Test 2 -
INFO = \r[Balancic\r]
MODELS = reclassicphm
CLAWMODEL 
= v_knife_zombie_lj.mdl
HEALTH 
= 3200
SPEED 
= 270
GRAVITY 
= 0.70
KNOCKBACK 
= 0.50
FLAG 
= 

Аватара пользователя
snebars
 
Сообщения: 23
Зарегистрирован: 27 мар 2021, 22:29
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Немного pawn, js, css, html

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 9