Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 28 апр 2024, 11:02

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: аля скриптинг xD
СообщениеДобавлено: 31 май 2011, 00:09 
Не в сети
Аватара пользователя
Зарегистрирован:
24 янв 2011, 03:32
Последнее посещение:
09 дек 2021, 03:04
Сообщения: 756
Откуда: Futurama
Вот кусок кода ))
Код:
    
function_2(mode, _, _, ...)
{   
   new Float:f_int
   new pev_is
   
   switch(mode)
   {   
      case 1: pev_is = pev_health   // 41 пробывал присваивать индекс
      case 2: pev_is = pev_armorvalue   // 47
      case 3:   
      {   
         function_2(1)
         function_2(2)
      }
   }
   pev(player, pev_is, f_int) // ошибка тут
   ((f_int += f_random_int) > f_max_int) ? (f_int = f_max_int):f_int
   set_pev(player, pev_is, f_int) // ошибка тут   
}

Компилится без ошибок, добавляет хп ап
Выдает с debug: [FAKEMETA] Undefined pev index: 0

Вопрос: Как заменить значение "pev_" в зависимости от switch(mode) ...


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 31 май 2011, 04:37 
Не в сети
Аватара пользователя
Зарегистрирован:
06 июн 2010, 16:53
Последнее посещение:
09 апр 2024, 17:07
Сообщения: 1143
Откуда: Владивосток
[FAKEMETA] Undefined pev index: 0 тут может возникнуть только если mode == 0 || mode > 3

_________________
Изображение
Vi Veri Veniversum Vivus Vici


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 31 май 2011, 06:51 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
27 апр 2024, 13:55
Сообщения: 6867
KORD_12.7 писал(а):
[FAKEMETA] Undefined pev index: 0 тут может возникнуть только если mode == 0 || mode > 3
Тогда стоит добавить
Код:
default:

Turanga_Leela
ЗЫ Если не секрет, ты по какой книжке программировать учишься? А то код очень нестандартно выглядит. хД


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 31 май 2011, 11:28 
Не в сети
Аватара пользователя
Зарегистрирован:
24 янв 2011, 03:32
Последнее посещение:
09 дек 2021, 03:04
Сообщения: 756
Откуда: Futurama
KORD_12.7
В примере mode = 3, это 100%, так как выполняет по намеченному case 3: - do case 1, case 2. Почему-то не присваивает переменной значение "pev_" или же это присвоение не нравится fakemet(e) :pardon:
Lev
В добавлении
Код:
default:
нет смысла, тут четко определены значения - 1 & 2 // 3 = 1, 2
Цитата:
ЗЫ Если не секрет, ты по какой книжке программировать учишься? А то код очень нестандартно выглядит. хД
Учусь на своих и чужих ошибках + полистываю сырки :wink:, если разобрать данный случай
Код:
#define function_2(%1)   func(player, Float:f_random_int, Float:f_max_int, %1, num)
function_2(1) // mode = 1   (зависит от cvar 1-3)
//сделано по аналогии - #define IsPlayer(%1)  (1 <= %1 <= g_MaxPlayers)
PS
Решил проблему так:
Код:
func(player, Float:f_random_int, Float:f_max_int, mode, num)
{
new Float:f_int
   switch(mode)
   {   
      case 1: pev(player, pev_health, f_int)
      case 2: pev(player, pev_armorvalue, f_int)
      case 3:
      {
         function_2(1)
         function_2(2)
      }
   }
   ((f_int += f_random_int) > f_max_int) ? (f_int = f_max_int):f_int

   if(mode == 1)      set_pev(player, pev_health, f_int)
   else if(mode == 2)   set_pev(player, pev_armorvalue, f_int)
}


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 31 май 2011, 12:37 
Не в сети
Аватара пользователя
Зарегистрирован:
06 июн 2010, 16:53
Последнее посещение:
09 апр 2024, 17:07
Сообщения: 1143
Откуда: Владивосток
Код:
/* AMX Mod X
*   Increase Points
*
* http://aghl.ru/forum/ - Russian Half-Life and Adrenaline Gamer Community
*
* This file is provided as is (no warranties)
*/

#pragma semicolon 1
#pragma ctrlchar '\'

#include <amxmodx>
#include <fun>

#define PLUGIN "Increase Points"
#define VERSION "0.1"
#define AUTHOR "KORD_12.7"

#define MAX_HEALTH 150
#define MAX_ARMOR 200

#define RND_HEALTH_MIN 1
#define RND_HEALTH_MAX 10

#define RND_ARMOR_MIN 1
#define RND_ARMOR_MAX 15

#define check_bit(%1,%2) (%1 & (1<<%2))

new g_pcvar_mode;

enum _:MODES
{
   MODE_HEALTH,
   MODE_ARMOR
}

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR);
   register_clcmd("say /increase", "CmdIncreasePoints");

   // 1 - increase health
   // 2 - increase armor
   // 3 - increase health and armor (3 = 1 + 2)
   g_pcvar_mode = register_cvar("amx_increase_mode", "3");
}

public CmdIncreasePoints(id)
{
   new mode = get_pcvar_num(g_pcvar_mode);
   if (!mode) return;
      
   if (check_bit(mode, MODE_HEALTH))
   {
      new hp = get_user_health(id);
      set_user_health(id, ((hp += random_num(RND_HEALTH_MIN, RND_HEALTH_MAX)) > MAX_HEALTH) ? MAX_HEALTH : hp);
   }
   
   if (check_bit(mode, MODE_ARMOR))
   {
      new ap = get_user_armor(id);
      set_user_armor(id, ((ap += random_num(RND_ARMOR_MIN, RND_ARMOR_MAX)) > MAX_ARMOR) ? MAX_ARMOR : ap);
   }
}

_________________
Изображение
Vi Veri Veniversum Vivus Vici


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 01 июн 2011, 15:46 
Не в сети
Аватара пользователя
Зарегистрирован:
24 янв 2011, 03:32
Последнее посещение:
09 дек 2021, 03:04
Сообщения: 756
Откуда: Futurama
KORD_12.7
Долго пришлось разбираться -_- с битовыми смещениями в итоге вот что получилось

1 = 0000 0001
2 = 0000 0010
3 = 0000 0011

mode(1) = 0000 0001 & 0000 0001 = 1 // MODE_HEALTH - смещение 0
mode(2) = 0000 0010 & 0000 0010 = 2 // MODE_ARMOR - смещение 1

mode(3) = 0000 0011 & 0000 0001 = 1
mode(3) = 0000 0011 & 0000 0010 = 2

Вопросик: как можно перевести на русский язык:
Код:
if (check_bit(mode, MODE_HEALTH))     // if(1) ??
if (check_bit(mode, MODE_ARMOR))      // if(2) ??


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 01 июн 2011, 17:17 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
27 апр 2024, 13:55
Сообщения: 6867
Проверка на установленный бит (1 он или 0).


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 01 июн 2011, 17:26 
Не в сети
Аватара пользователя
Зарегистрирован:
24 янв 2011, 03:32
Последнее посещение:
09 дек 2021, 03:04
Сообщения: 756
Откуда: Futurama
Lev
Насчет "1" понятно, ... т.е. выполняет при любом X > 0 ?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 01 июн 2011, 20:48 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
27 апр 2024, 13:55
Сообщения: 6867
Где там X?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: аля скриптинг xD
СообщениеДобавлено: 01 июн 2011, 21:21 
Не в сети
Аватара пользователя
Зарегистрирован:
24 янв 2011, 03:32
Последнее посещение:
09 дек 2021, 03:04
Сообщения: 756
Откуда: Futurama
Lev
X это выражение в условии
Код:
if(1) // if(X=1) отсюда вопрос X > 0 ?

_________________
my gun is bigger than yours ! ..


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу 1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB