AMX MOD X
Среда, 11.12.2024, 22:35:33



Приветствую Вас Гость | RSS
[ Главная ] [ Как передать значение переменной в другой плагин? - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Как передать значение переменной в другой плагин?
MaZeДата: Понедельник, 05.10.2009, 00:37:07 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Не в сети
Как передать значение переменной в другой плагин? Иногда возникает потребность управлять одним плагином через другой. Как пример такой задачи - это включение хука на джамп серврерах после прохождения карты. Обычно плагин с хуком идет отдельно от основного джамп плагина.
 
LtRATДата: Понедельник, 05.10.2009, 02:36:23 | Сообщение # 2
Сержант
Группа: Пользователи
Сообщений: 33
Репутация: 1
Статус: Не в сети
В приведенном примере, можно не реализовывать взаимодействие между плагинами :)
Основной модуль должен быть в plugins.ini раньше чем плагин Хука... В основном модуле ловить сообщение +hook итп, если чел карту не прошел, то резать сообщение (основной модуль то про это значет), таким образом оно не дойдет до плагина Хука и остальных плагинов, которые ловят эти сообщения...
Но это впринципе не правильный способ, и для ленивых :) зато не требует постоянного переписывания плагинов, если их автор апдейтит итп :)

ЗЫ что-то я статей про создание native функций не припомню, а там есть что понаписать :) и поздновато уже (4:40 am)... =)

Add: на примере того что я делал:

создаем jump_framework.inc файл, примерно вот с таким содержанием

Code

#if defined _jump_included
    #endinput
#endif
#define _jump_included

#pragma library jump_framework

native zeroBadJump( player ); //функция которую будем экспортировать и использовать в другом плагине

Теперь основной плагин который экспортирует данную функцию

Code

#include "jump_framework"   

new jump_badjump_flags[33];

public plugin_natives()
{
   register_library("jump_framework");
   register_native("zeroBadJump", "native_zero_bad_jump");
}   

public native_zero_bad_jump(id, nums)
{
   if(nums != 1)
    return log_error(AMX_ERR_NATIVE, "Bad native parameters");

   return jump_badjump_flags[get_param(1)] = 0; //Обнуляем переменную в основном плагине, и отсылаем вызывающему плагину 0, как подтверждение...
         //вообще говоря у меня тут в плагине не константа =) поэтому return и надо )  а так как раз можно отсылать переменную о том прошли карту или нет...
}

Теперь как использовать из другого плагина:

Code

#include "jump_framework"

public client_putinserver(id)
{
   if (zeroBadJump(id) == 0) //собственно и используем
   {
    //делаем свое грязное дело
   }
}

ЗЗЫ да кстати проверьте, может я что не верно делаю =) или можно улучшить итп =) если что - сильно не пинайтесь :)

Сообщение отредактировал LtRAT - Понедельник, 05.10.2009, 02:51:30
 
MaZeДата: Понедельник, 05.10.2009, 14:51:06 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Не в сети
Спасибо за совет.
Иногда встречал в плагинах такую конструцию:
public plugin_natives()
{
register_library(...);
register_native(...);
register_native(...);
register_native(...);
}
но не мог понять для чего тут описание native функций. Теперь стало немного понятней, будем пробовать делать по правильному.
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024