AMX MOD X
Пятница, 09.01.2026, 20:31:29



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Помогите с кодом
ScofieldДата: Четверг, 12.06.2008, 10:29:54 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 16
Репутация: 0
Статус: Не в сети
Вот код :

Code
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>

#define PLUGIN "Bob"
#define VERSION "1.0"
#define AUTHOR "Scofield"

new status[]="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}"
public plugin_init() {
     register_plugin(PLUGIN, VERSION, AUTHOR)
     register_concmd("bob","cmd_bob")
     register_concmd("unbob","cmd_unbob")
     register_event("DeathMsg","event_deathmsg","a")  
     / / Add your code here...
}
public event_deathmsg(id){
     status[id]=0;
     return PLUGIN_HANDLED
}
public client_kill(id){
     status[id]=0;
     return PLUGIN_HANDLED
}
public client_connect(id){
     status[id]=0;
     return PLUGIN_HANDLED
}
public cmd_bob(id){
     if(status[id]==0){
      status[id]=1;
      set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,30);
      set_hudmessage(14, 97, 230, -1.0, -1.0, 0, 6.0, 6.0)
      show_hudmessage(id, "Your have Bob.")
      set_user_health(id,85)
      return PLUGIN_HANDLED
     }else{
      set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 6.0)
      show_hudmessage(id, "Your already have SuperMod.")
       
      return PLUGIN_HANDLED
     }
     return PLUGIN_HANDLED
}
public cmd_unbob(id){
     if(status[id]==0){
      status[id]=2;
      set_user_health(id,200)
      set_hudmessage(20, 236, 78, -1.0, -1.0, 0, 6.0, 6.0)
      show_hudmessage(id, "Your have unbob mod.")
       
      set_user_rendering(id,kRenderFxGlowShell,0,255,0,kRenderNormal,25);
      return PLUGIN_HANDLED
     }else{
      set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 6.0)
      show_hudmessage(id, "Your already have SuperMod.")
      return PLUGIN_HANDLED
     }
     return PLUGIN_HANDLED
}
.
Задача в том, что мне нужно чтоб каждый раз когда игрок умирал, ему надо было заново вводить команду bob или unbob.
Вроде все написал правильно, компилятор не гавкает, а серавно после смерти пишет : Your already have SuperMod.
Мне кажеться дело в цикле IF, но как?
Заранее спс


Сообщение отредактировал Scofield - Четверг, 12.06.2008, 10:32:26
 
DaTaДата: Четверг, 12.06.2008, 11:26:14 | Сообщение # 2
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote (Scofield)
new status[]="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}"

omg, что это за строка?) у тебя массив будет такого вида {'{', '0', ',' , и т.д.
наверно надо инициализировать массив так
Code
new status[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

но это тоже бред, ведь можно провести аналогичную инициализацию вот так
Code
new status[33] = {0, ...}

но так как по умолчанию при инициализации в pawn переменная имеет значение 0, то запись можно еще упростить:
Code
new status[33]

-------------------------------
Code
client_kill(id)

если ты надеешься, что существует вызов такой функции амхх'ом, то зря lol
-------------------------------
Code
public event_deathmsg(id){
        status[id]=0;
        return PLUGIN_HANDLED
}

неправильно айди игрока узнаешь, нужно так:
Code
public event_deathmsg(){
        new iVictim = read_data(2)//айди убитого игрока
        status[iVictim]=0;
        return PLUGIN_HANDLED
}

см. http://wiki.amxmodx.org/Half-Life_1_Game_Events#DeathMsg


Сообщение отредактировал DaTa - Четверг, 12.06.2008, 11:27:06
 
ScofieldДата: Четверг, 12.06.2008, 11:44:42 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 16
Репутация: 0
Статус: Не в сети
Ого, а я то думал что все так просто. А read_data это типо функция? Есть какието ссылки про неё?

Добавлено (2008-06-12, 11:44 Am)
---------------------------------------------
Уже все заработало, спасибо. Вот только немного не доходит что такое read_data, английский не сильно, можеш сказать в двух словах. И можно ли с помщью read_data узнать что-то кроме id?

Сообщение отредактировал Scofield - Четверг, 12.06.2008, 11:45:13
 
DaTaДата: Четверг, 12.06.2008, 12:34:19 | Сообщение # 4
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
я в этом сам не много понимаю, но попытаюсь объяснить что знаю :D
существуют сообщения, которые сервер отправляет клиентам. DeathMsg - это такое сообщение.
его можно искуственно создать
Code
    message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0)  
     write_byte(Killer)
     write_byte(Victim)
     write_string(weapon)
     message_end()

т.е. сначало вызывается функция message_begin(функция движка MessageBegin), вот ее прототип в павне(см. messages.inc)
Code
native message_begin(dest, msg_type, origin[3] = {0,0,0}, player = 0);

dest - назначение сообщения, смотри message_const.inc каким может быть

Code
/* Destination types for message_begin() */
#define    MSG_BROADCAST               0        // Unreliable to all
#define    MSG_ONE                     1        // Reliable to one (msg_entity)
#define    MSG_ALL                     2        // Reliable to all
#define    MSG_INIT                    3        // Write to the init string
#define MSG_PVS                     4        // Ents in PVS of org
#define MSG_PAS                     5        // Ents in PAS of org
#define MSG_PVS_R                   6        // Reliable to PVS
#define MSG_PAS_R                   7        // Reliable to PAS
#define MSG_ONE_UNRELIABLE          8        // Send to one client, but don't put in reliable stream, put in unreliable datagram (could be dropped)
#define    MSG_SPEC                    9        // Sends to all spectator proxies

msg_type - тип сообщения, который может быть таким http://wiki.amxmodx.org/Half-Life_1_Engine_Messages а так же соответсвовать айди одного из сообщений http://wiki.amxmodx.org/Half-Life_1_Game_Events (айди узнается так get_user_msgid("TextMsg"), см. amxmodx.inc, так же есть обратная функция get_user_msgname)

origin[3] - координаты сообщения на карте(например, сообщение создание искор на карте использует)

player - айди энтити(например, айди игрока при сообщении в чат для правильного выбора цвета команды)
-----
потом предоставляются нужные данные, в зависимости от айди сообщения, функциями(messages.inc):

Code
native write_byte(x);
native write_char(x);
native write_short(x);
native write_long(x);
native write_entity(x);
native write_angle(x);
native write_coord(x);
native write_string(x[]);

-----
затем сообщение завершается
Code
message_end()

-----
так вот, функция(amxmodx.inc)
Code
native read_data(value, {Float,Sql,Result,_}:... );

считывает в хуке register_event данные сообщения(отправленые write_* функциями)
 
ScofieldДата: Четверг, 12.06.2008, 17:17:40 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 16
Репутация: 0
Статус: Не в сети
DaTa, а ты знаеш как всатвить модель на карту?
 
DaTaДата: Четверг, 12.06.2008, 17:33:09 | Сообщение # 6
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
создавай отдельные темы для разных вопросов
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026