Русское сообщество по скриптингу

Вызов функции не больше одного раза в раунде.

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Вызов функции не больше одного раза в раунде.

Сообщение NHG » 23 дек 2009, 21:39

Привет всем. Вот меня интересует вопрос, как сделать так, чтобы в начале функции спрашивалось: эта функция выполнялась раньше в над этим игроком, в этом раунде? Если не выполнялась, то продолжить функцию. Если уже выполнялась в этом раунде, то функцию не продолжать (остановить).

Вот например мы видим ниже этот "гениальный" плагин. Как сделать так, чтоб больше одного раза в раунде, игрок не мог вызвать функцию vasia?

Код: Выделить всё
#define PLUGIN "Pupkin Plugin"
#define VERSION "1.0"
#define AUTHOR "Bac9|"

#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
register_plugin(PLUGINVERSIONAUTHOR)
register_concmd("amx_pupkin","vasia",ADMIN_ALL,"zapustit function vasia pupkin")
}

public 
vasia(id) {
client_print(id,print_chat,"Tb| 3anycTuL fyHkcuy pupkina")
Аватара пользователя
NHG
 
Сообщения: 9
Зарегистрирован: 05 дек 2009, 00:09
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Вызов функции не больше одного раза в раунде.

Сообщение Ser_UFL » 24 дек 2009, 03:03

Код: Выделить всё
public vasia(id) {
     if 
переменная_id false
     
{
          
переменная_id присвоить true
          client_print
(id,print_chat,"Tb| 3anycTuL fyHkcuy pupkina")
     }
}

public  round_start(id) {
     
переменная_id присвоить false
}

client_connect(id) {
     
переменная_id присвоить false


не факт :-)
Запомните, всегда по жизни вас будут красить вежливость и спокойствие, а не наезды и дешевые понты ;)
Аватара пользователя
Ser_UFL
 
Сообщения: 975
Зарегистрирован: 22 авг 2009, 19:30
Откуда: Hell
Благодарил (а): 276 раз.
Поблагодарили: 380 раз.
Языки программирования: Counter-Strike 1.6:
WebMod-scripts, little Pawn.

Re: Вызов функции не больше одного раза в раунде.

Сообщение Zefir » 24 дек 2009, 07:56

Serf_UFL, ай молодец :) ты почти освоил программинг на павне :)

Вот приблизительно так. Не проверял.
Код: Выделить всё
#define PLUGIN "Pupkin Plugin"
#define VERSION "1.0"
#define AUTHOR "Bac9|"

#include <amxmodx>
    
new g_vasya_exec[33]

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_concmd("amx_pupkin","vasia",ADMIN_ALL,"zapustit function vasia pupkin")
    
register_logevent("round_start_handle"2"0=World triggered""1=Round_Start")
}

public 
round_start_handle() {
    
g_vasya_exec = {0,...}
}

public 
vasia(id) {
    if (
g_vasya_exec[id]) {
        
client_print(id,print_chat,"Tb| y}|{e 3anycKaL fyHkcuy pupkina")
        return 
PLUGIN_CONTINUE
    
}
    
g_vasya_exec[id] = 1
    client_print
(id,print_chat,"Tb| 3anycTuL fyHkcuy pupkina")
}
 
Чтобы правильно задать вопрос, нужно знать более половины ответа...
Cerberus - замена amxbans и многому другому
Аватара пользователя
Zefir
 
Сообщения: 21
Зарегистрирован: 31 авг 2009, 21:06
Откуда: Kiev
Благодарил (а): 2 раз.
Поблагодарили: 13 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6

Re: Вызов функции не больше одного раза в раунде.

Сообщение Ser_UFL » 24 дек 2009, 15:16

Zefir, я великолепен ))
Запомните, всегда по жизни вас будут красить вежливость и спокойствие, а не наезды и дешевые понты ;)
Аватара пользователя
Ser_UFL
 
Сообщения: 975
Зарегистрирован: 22 авг 2009, 19:30
Откуда: Hell
Благодарил (а): 276 раз.
Поблагодарили: 380 раз.
Языки программирования: Counter-Strike 1.6:
WebMod-scripts, little Pawn.

Re: Вызов функции не больше одного раза в раунде.

Сообщение NHG » 24 дек 2009, 18:43

не компилируется :(
Аватара пользователя
NHG
 
Сообщения: 9
Зарегистрирован: 05 дек 2009, 00:09
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Вызов функции не больше одного раза в раунде.

Сообщение DJ_WEST » 25 дек 2009, 03:40

не компилируется

Замени:
Код: Выделить всё
g_vasya_exec = {0,...} 

На:
Код: Выделить всё
arrayset(g_vasya_exec0charsmax(g_vasya_exec)) 
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2


Вернуться в Скриптинг

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

Сейчас этот форум просматривают: Bing [Bot] и гости: 12