Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Ошибка в gm_screens

Статус пользователя ex3m777
сообщение 10.11.2013, 0:45
Сообщение #1


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Всем привет. тут в общем небольшая проблема.
Установил плагин gm_screens

Код:
/* 
Plugin: gmScreens
Version: 2.1
Original author: uTg | bigpapajiggs
[amxmodmenu.ru] #Staff.

*/

// Plugin
#define PLUGIN "gmScreens"
#define VERSION "2.1"
#define AUTHOR "[gm-project.net] #Staff"

#include <amxmodx>
#include <amxmisc>
#include <colorchat>

new player

//PCVAR
new maxss, ssinterval, timestamptype

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_concmd("amx_screen", "concmd_screen", ADMIN_LEVEL_D, "<authid, nick or #userid> <number of screens>")

maxss = register_cvar("amx_maxscreens", "4")
ssinterval = register_cvar("amx_ssinterval", "2.5")
timestamptype = register_cvar("amx_timestamptype", "1")

register_cvar("gm_screens", VERSION, FCVAR_SERVER | FCVAR_SPONLY)
}

public concmd_screen(id, level, cid)
{
//Is the amx_screen'er an admin?
if(!cmd_access(id, level, cid, 3))
{
return PLUGIN_HANDLED
}

//Read the arguements
new arg1[24], arg2[4]
read_argv(1, arg1, 23)
read_argv(2, arg2, 3)

new screens = str_to_num(arg2)
new maxscreens = get_pcvar_num(maxss)

//Let us make sure that there aren't too many screenshots taken
if(screens > maxscreens)
{
console_print(id, "[gmScreens] You cannot take that many screenshots!")

return PLUGIN_HANDLED
}

//Does the target exist?
player = cmd_target(id, arg1, 1)
if (!player)
{
return PLUGIN_HANDLED
}

//How many screenshots?
new Float:interval = get_pcvar_float(ssinterval)
new array[2]
array[0] = id
array[1] = player
set_task(interval, "takeScreen", 0, array,2, "a", screens)

return PLUGIN_HANDLED
}

public takeScreen(array[2])
{
new player = array[1]
new id = array[0]

//Get time, admin name, and target name
new timestamp[32], name[32], adminname[32]
get_time("%m/%d/%Y - %H:%M:%S", timestamp, 31)
get_user_name(player, name, 31)
get_user_name(id, adminname, 31)

//No timestamp
if(get_pcvar_num(timestamptype) == 0)
{
ColorChat(player, RED, "[gmScreens]^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01", name, adminname)

//Take the screenshot
client_cmd(player, "stop")
client_cmd(player, "snapshot")
}
//Client Print only
else if(get_pcvar_num(timestamptype) == 1)
{
//client_print Timestamp Message
ColorChat(player, RED, "[gmScreens]^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01 (Date: %s)", name, adminname, timestamp)

//Take the screenshot
client_cmd(player, "stop")
client_cmd(player, "snapshot")
}
//HUD Message only
else if(get_pcvar_num(timestamptype) == 2)
{
//HUD Timestamp Message
set_hudmessage(255, 255, 0, 0.93, 0.0, 0, 6.0, 12.0)
show_hudmessage(player, "gm")

//Take the screenshot
client_cmd(player, "stop")
client_cmd(player, "snapshot")
}
//Both
else if(get_pcvar_num(timestamptype) == 3)
{
//HUD Timestamp Message
set_hudmessage(255, 255, 0, 0.93, 0.0, 0, 6.0, 12.0)
show_hudmessage(player, "gm")

//client_print Timestamp Message
ColorChat(player, RED, "[gmScreens]^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01 (Date: %s)", name, adminname, timestamp)

//Take the screenshot
client_cmd(player, "stop")
client_cmd(player, "snapshot")
}
return PLUGIN_CONTINUE
}


Ну так вот, выдает ошибку в логах

Цитата
L 11/10/2013 - 00:02:02: [AMXX] Displaying debug trace (plugin "gm_screens.amxx")
L 11/10/2013 - 00:02:02: [AMXX] Run time error 4: index out of bounds
L 11/10/2013 - 00:02:02: [AMXX] [0] colorchat.inc::ColorChat (line 74)
L 11/10/2013 - 00:02:02: [AMXX] [1] gm_screens.sma::takeScreen (line 101)

Подскажите как исправить...

а еще команду стоп поставил перед первым скрином, чтобы на демке не делались скрины повторно

Отредактировал: grishka444, - 10.12.2013, 14:40


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 10.11.2013, 0:46
Сообщение #2
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(grishka444 @ 10.11.2013, 2:45) *
Всем привет. тут в общем небольшая проблема.
Установил плагин gm_screens

Код:
/* 
Plugin: gmScreens
Version: 2.1
Original author: uTg | bigpapajiggs
[amxmodmenu.ru] #Staff.

*/

// Plugin
#define PLUGIN "gmScreens"
#define VERSION "2.1"
#define AUTHOR "[gm-project.net] #Staff"

#include <amxmodx>
#include <amxmisc>
#include <colorchat>

new player

//PCVAR
new maxss, ssinterval, timestamptype

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_concmd("amx_screen", "concmd_screen", ADMIN_LEVEL_D, "<authid, nick or #userid> <number of screens>")

maxss = register_cvar("amx_maxscreens", "4")
ssinterval = register_cvar("amx_ssinterval", "2.5")
timestamptype = register_cvar("amx_timestamptype", "1")

register_cvar("gm_screens", VERSION, FCVAR_SERVER | FCVAR_SPONLY)
}

public concmd_screen(id, level, cid)
{
//Is the amx_screen'er an admin?
if(!cmd_access(id, level, cid, 3))
{
return PLUGIN_HANDLED
}

//Read the arguements
new arg1[24], arg2[4]
read_argv(1, arg1, 23)
read_argv(2, arg2, 3)

new screens = str_to_num(arg2)
new maxscreens = get_pcvar_num(maxss)

//Let us make sure that there aren't too many screenshots taken
if(screens > maxscreens)
{
console_print(id, "[gmScreens] You cannot take that many screenshots!")

return PLUGIN_HANDLED
}

//Does the target exist?
player = cmd_target(id, arg1, 1)
if (!player)
{
return PLUGIN_HANDLED
}

//How many screenshots?
new Float:interval = get_pcvar_float(ssinterval)
new array[2]
array[0] = id
array[1] = player
set_task(interval, "takeScreen", 0, array,2, "a", screens)

return PLUGIN_HANDLED
}

public takeScreen(array[2])
{
new player = array[1]
new id = array[0]

//Get time, admin name, and target name
new timestamp[32], name[32], adminname[32]
get_time("%m/%d/%Y - %H:%M:%S", timestamp, 31)
get_user_name(player, name, 31)
get_user_name(id, adminname, 31)

//No timestamp
if(get_pcvar_num(timestamptype) == 0)
{
ColorChat(player, RED, "[gmScreens]^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01", name, adminname)

//Take the screenshot
client_cmd(player, "stop")
client_cmd(player, "snapshot")
}
//Client Print only
else if(get_pcvar_num(timestamptype) == 1)
{
//client_print Timestamp Message
ColorChat(player, RED, "[gmScreens]^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01 (Date: %s)", name, adminname, timestamp)

//Take the screenshot
client_cmd(player, "stop")
client_cmd(player, "snapshot")
}
//HUD Message only
else if(get_pcvar_num(timestamptype) == 2)
{
//HUD Timestamp Message
set_hudmessage(255, 255, 0, 0.93, 0.0, 0, 6.0, 12.0)
show_hudmessage(player, "gm")

//Take the screenshot
client_cmd(player, "stop")
client_cmd(player, "snapshot")
}
//Both
else if(get_pcvar_num(timestamptype) == 3)
{
//HUD Timestamp Message
set_hudmessage(255, 255, 0, 0.93, 0.0, 0, 6.0, 12.0)
show_hudmessage(player, "gm")

//client_print Timestamp Message
ColorChat(player, RED, "[gmScreens]^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01 (Date: %s)", name, adminname, timestamp)

//Take the screenshot
client_cmd(player, "stop")
client_cmd(player, "snapshot")
}
return PLUGIN_CONTINUE
}


Там по умолчанию стояло

Код:
ColorChat(id, RED, "[gmScreens]^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01 (Date: %s)", name, adminname, timestamp)

Я поменял на
Код:
ColorChat(player, RED, "[gmScreens]^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01 (Date: %s)", name, adminname, timestamp)

Чтобы не показывало это сообщение всем в чате, а то флудит

Ну так вот, выдает ошибку в логах


Подскажите как исправить...

а еще команду стоп поставил перед первым скрином, чтобы на демке не делались скрины повторно

id
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 10.11.2013, 0:48
Сообщение #3


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Цитата(TarikYuzkiv @ 10.11.2013, 1:46) *
id

а как тогда сделать чтобы это сообщение показывало в чате только тому человеку которому делаются скрины? а то ведь всем показывает.. тестировал уже


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 10.11.2013, 0:51
Сообщение #4
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(grishka444 @ 10.11.2013, 2:48) *
а как тогда сделать чтобы это сообщение показывало в чате только тому человеку которому делаются скрины? а то ведь всем показывает.. тестировал уже

Понял, не прочитал полностью сообщения. Сейчас глянем.

Отредактировал: TarikYuzkiv, - 10.11.2013, 0:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 10.11.2013, 4:50
Сообщение #5


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Должно быть так
ColorChat(id, - вывод только игроку
ColorChat(0, - вывод всем


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 12.11.2013, 13:39
Сообщение #6


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Так все же. как исправить ошибку???


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 10.12.2013, 14:41
Сообщение #7


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Проблема актуальна!!!


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 10.12.2013, 16:02
Сообщение #8
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

Цитата(grishka444 @ 10.12.2013, 16:41) *
Проблема актуальна!!!
Содержимое файла colorchat.inc показывай.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 10.12.2013, 16:18
Сообщение #9


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Цитата(STR@TEG @ 10.12.2013, 18:02) *
Содержимое файла colorchat.inc показывай.

Код:
/* Fun functions
*
* by Numb
*
* This file is provided as is (no warranties).
*/

#if defined _colorchat_included
#endinput
#endif
#define _colorchat_included

enum Color
{
NORMAL = 1, // clients scr_concolor cvar color
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}

new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
new message[256];

switch(type)
{
case NORMAL: // clients scr_concolor cvar color
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}

vformat(message[1], 251, msg, 4);

// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';

new team, ColorChange, index, MSG_Type;

if(id)
{
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}

team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);

ShowColorMessage(index, MSG_Type, message);

if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}

ShowColorMessage(id, type, message[])
{
static bool:saytext_used;
static get_user_msgid_saytext;
if(!saytext_used)
{
get_user_msgid_saytext = get_user_msgid("SayText");
saytext_used = true;
}
message_begin(type, get_user_msgid_saytext, _, id);
write_byte(id)
write_string(message);
message_end();
}

Team_Info(id, type, team[])
{
static bool:teaminfo_used;
static get_user_msgid_teaminfo;
if(!teaminfo_used)
{
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
teaminfo_used = true;
}
message_begin(type, get_user_msgid_teaminfo, _, id);
write_byte(id);
write_string(team);
message_end();

return 1;
}

ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}

return 0;
}

FindPlayer()
{
new i = -1;

while(i <= get_maxplayers())
{
if(is_user_connected(++i))
return i;
}

return -1;
}


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 11.12.2013, 13:42
Сообщение #10
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

grishka444,
Долго рылся, так ни к чему и не пришел. Попробуй убрать отсылку команды stop или сделать задержку посредством wait, и проверить, но это, конечно, бред.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: