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

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
20
Реакции
3
Ошибка
error 035: argument type mismatch <argument 1> (57)
Компилятор
Локальный
Amx Mod X
1.9.0
Исходный код
#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 (i = 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)
}
Всем привет! Столкнулся с проблемкой и никак не могу ее решить... Идея плагина в том, что в ini файле указываешь сколько зомби тебе надо(там с модельками и т.п). Плагин читает из ini файла и регистрирует то кол-во зомби, скок их написано в ini. Мучаюсь уже 6 часов, в инете инфы не нашел (или плохо искал). Ошибка все время в 1 аргументе (где идет сама регистрация класса). Подскажите , пожалуйста, где накосячил? Заранее спасибо!
 
В этой теме было размещено решение! Перейти к решению.

Вложения

Сообщения
3,570
Реакции
1,560
Помог
133 раз(а)
Код:
/**
 * Registers a custom class which will be added to the zombie classes menu of ZP.
 *
 * Note: The returned zombie class ID can be later used to identify
 * the class when calling the zp_get_user_zombie_class() natives.
 *
 * @param name        Caption to display on the menu.
 * @param info        Brief description of the class.
 * @param model        Player model to be used.
 * @param clawmodel    Claws model to be used.
 * @param hp        Initial health points.
 * @param speed        Maximum speed.
 * @param gravity    Gravity multiplier.
 * @param knockback    Knockback multiplier.
 * @return        An internal zombie class ID, or -1 on failure.
 */
native zp_register_zombie_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity, Float:knockback)
В плагине ошибка. Этот натив принимает в качестве аргументов строку, а у вас указатель динамического массива.
 
Сообщения
838
Реакции
516
Помог
12 раз(а)
можно пойти на хитрость и просто в zombieplague.inc убрать у параметров const
правда у остальных плагинов, которые будут обращаться к этому нативу так же будут ошибки при использовании - решается так же стиранием const в исходнике с ошибкой
 
Сообщения
74
Реакции
36
Помог
4 раз(а)
А ничего что у него в аргумент int/float посылается string?)
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу