|
Форум Counter-Strike 1.6 Сервер Counter-Strike 1.6 Помощь по скриптингу (native, mas[])В чём проблема? (Помогите решить проблему) |
(native, mas[])В чём проблема? |
Дата: Понедельник, 12.11.2018, 19:38 | Сообщение # 1
Скриптер
Дух ( Новичок )
Offline
Данный код ничего не возвращает при вызове, а должен - количество предметов. Возвращает всегда false, то есть 0 ( не одна из проверок не вызывается )
Код public native_get_user_ItemPlayer(id, const ItemName[]) { if(equali(ItemName,"ZombieBlood")) { return g_Item[id][0]; } else if(equali(ItemName,"ZombieFlesh")) { return g_Item[id][1]; } else if(equali(ItemName,"SurvBlood")) { return g_Item[id][2]; } else if(equali(ItemName,"NemesisBlood")) { return g_Item[id][3]; } else if(equali(ItemName,"LastFlare")) { return g_Item[id][4]; } else if(equali(ItemName,"Antidote")) { return g_Item[id][5]; } else if(equali(ItemName,"EnergyDrink")) { return g_Item[id][6]; } else if(equali(ItemName,"SwissKnife")) { return g_Item[id][7]; } else if(equali(ItemName,"Backpack")) { return g_Item[id][8]; } else if(equali(ItemName,"BunchKeys")) { return g_Item[id][9]; } else if(equali(ItemName,"Pills")) { return g_Item[id][10]; } else if(equali(ItemName,"CannedFood")) { return g_Item[id][11]; } return false; } Вызов функции делаю так: Код get_user_ItemPlayer(id, "ZombieFlesh") Добавлено (12.11.2018, 19:39) |
Дата: Вторник, 13.11.2018, 00:56 | Сообщение # 2
Скриптер
Любитель
Offline
Либо регистрация натива неверная, либо возвращаемый элемент равен нулю.
В следующий раз нужно кидать полный код, чтобы не приходилось ванговать. Накидал код для примера. Плагин с регистрацией натива: Код #include <amxmodx> new g_iData[33][2]; public plugin_init() { register_plugin("Plugin 1", "1.0", "Author"); } public client_authorized(id) { g_iData[id][0] = 5; g_iData[id][1] = 10; } public plugin_natives() { register_native("get_string_data", "get_string_data", true); } public get_string_data(id, sData[]) { if(equali(sData, "test1")) return g_iData[id][0]; else return g_iData[id][1]; return false; } Плагин с обращением к нативу: Код #include <amxmodx> native get_string_data(id, sData[]); public plugin_init() { register_plugin("Plugin 2", "1.0", "Author"); register_clcmd("say /test", "Clcmd_Test"); } public Clcmd_Test(id) { client_print(id, print_chat, "1: %i | 2: %i", get_string_data(id, "test1"), get_string_data(id, "Test1")); } Обрати внимание на регистрацию натива, возможно, где-то там косяк, Массив g_iData для примера возвращаемого значения, двумерный только для аналогии с твоим плагином, заодно увидишь работу функции equali, ибо от неё зависит возвращаемый результат при передачи строки "test1 и "Test1". |
Дата: Вторник, 13.11.2018, 13:33 | Сообщение # 3
Скриптер
Мастер
Offline
Ну ребят, вы серьёзно?
get_param, get_string и т.д. в помощь.
Сообщение отредактировал MakapoH - Вторник, 13.11.2018, 13:36
|
Дата: Вторник, 13.11.2018, 15:51 | Сообщение # 4
Скриптер
Мастер
Offline
public native_get_user_ItemPlayer(id, const ItemName[]){ if(equali(ItemName,"ZombieBlood")) { return g_Item[id][0]; } else if(equali(ItemName,"ZombieFlesh")) { return g_Item[id][1]; } else if(equali(ItemName,"SurvBlood")) { return g_Item[id][2]; } else if(equali(ItemName,"NemesisBlood")) { return g_Item[id][3]; } else if(equali(ItemName,"LastFlare")) { return g_Item[id][4]; } else if(equali(ItemName,"Antidote")) { return g_Item[id][5]; } else if(equali(ItemName,"EnergyDrink")) { return g_Item[id][6]; } else if(equali(ItemName,"SwissKnife")) { return g_Item[id][7]; } else if(equali(ItemName,"Backpack")) { return g_Item[id][8]; } else if(equali(ItemName,"BunchKeys")) { return g_Item[id][9]; } else if(equali(ItemName,"Pills")) { return g_Item[id][10]; } else if(equali(ItemName,"CannedFood")) { return g_Item[id][11]; } return false; } Вставьте в начале паблика и будет счастье) |
| |||
| |||