• Страница 1 из 1
  • 1
(native, mas[])В чём проблема?
Дата: Понедельник, 12.11.2018, 19:38 | Сообщение # 1
Скриптер
Дух ( Новичок )
Offline
  • Dambas
  • Репутация: 64
  • Сообщений:19
  • Разработчик
  • Статус пользователя https://vk.com/bloodsource - Группа с моими работами
Данный код ничего не возвращает при вызове, а должен - количество предметов. Возвращает всегда 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)
---------------------------------------------
Никогда до этого не приходилось работать с функцией equali, может я делаю что не так?

Дата: Вторник, 13.11.2018, 00:56 | Сообщение # 2
Скриптер
Любитель
Offline
  • 6u3oH
  • Репутация: 17
  • Сообщений:21
  • Разработчик
Либо регистрация натива неверная, либо возвращаемый элемент равен нулю. 
В следующий раз нужно кидать полный код, чтобы не приходилось ванговать.

Накидал код для примера.

Плагин с регистрацией натива:

Код
#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
  • MakapoH
  • Репутация: 71
  • Сообщений:140
  • Разработчик
Ну ребят, вы серьёзно?

get_param, get_string и т.д. в помощь.
Сообщение отредактировал MakapoH - Вторник, 13.11.2018, 13:36
Дата: Вторник, 13.11.2018, 15:51 | Сообщение # 4
Скриптер
Мастер
Offline
  • Quin
  • Репутация: 56
  • Сообщений:121
  • Разработчик
  • Статус пользователя
Цитата Dambas ()
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;
}
param_conver(2) забыли.
Вставьте в начале паблика и будет счастье)
  • Страница 1 из 1
  • 1
Поиск:
(threadpage)