Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
wantip01 » 06 ноя 2016, 03:07
Привет всем. Нужно убрать нативы и заменить dm на cs.
Плагин не работает из за этого.
- Код: Выделить всё
[code=php]new g_iAllocInfoTarget, g_iAllocInfoTarget2
new g_szConfigFile[128];
new g_CT_Flags, g_T_Flags
new g_iCvar[5]
public plugin_init()
{
register_clcmd("say !2", "clcmd_test")
register_touch("Flag_Trigger", "player", "touch_flag")
g_iCvar[0]=register_cvar("f_time_reward", "60")
g_iCvar[1]=register_cvar("f_reward", "200")
g_iCvar[2]=register_cvar("f_time_capture", "20")
set_task(get_pcvar_float(g_iCvar[0]), "Task_Reward", 7738,_,_,"b")
}
public plugin_precache()
{
precache_model(Model_Flag)
}
public Task_Reward()
{
new id, reward=get_pcvar_num(g_iCvar[1])
for (id = 0; id <= 32; id++)
{
if(!is_user_connected(id))continue
reward=get_pcvar_num(g_iCvar[1])
if(fm_cs_get_user_team(id)==2&&g_CT_Flags)
{
reward*=g_CT_Flags
dm_set_user_money(id, dm_get_user_money(id)+reward)
}
else if(fm_cs_get_user_team(id)==1&&g_T_Flags)
{
reward*=g_T_Flags
dm_set_user_money(id, dm_get_user_money(id)+reward)
}
}
}
public clcmd_test(id)
{
if(privilege_get(id)!=3) return
new Float:origin[3]
pev(id, pev_origin, origin)
origin[2]-=7.0
new ent=spawn_flag(origin, "Новое место")
Save_Flags(ent)
}
public plugin_cfg()
{
g_iAllocInfoTarget = engfunc(EngFunc_AllocString, "cycler_sprite")
g_iAllocInfoTarget2 = engfunc(EngFunc_AllocString, "trigger_multiple")
new file[128]; get_localinfo("amxx_configsdir",file,63)
format(file, 127, "%s/test_cvars/flags.cfg", file)
if(file_exists(file)) server_cmd("exec %s", file), server_exec()
load_flags()
}
public load_flags()
{
new szMapName[32]
get_mapname(szMapName, 31)
strtolower(szMapName)
formatex(g_szConfigFile, 127, "addons/amxmodx/configs/flags")
if( !dir_exists(g_szConfigFile))
{
mkdir(g_szConfigFile)
format(g_szConfigFile, 127, "%s/%s.txt", g_szConfigFile, szMapName )
return
}
format(g_szConfigFile, 127, "%s/%s.txt", g_szConfigFile, szMapName)
if(!file_exists(g_szConfigFile))
{
fopen(g_szConfigFile, "at")
return
}
new iFile = fopen( g_szConfigFile, "rt" )
if(!iFile) return
new x[16], y[16], z[16], szDesc[32], szData[charsmax(x) + charsmax(y) + charsmax(z) + charsmax(szDesc)]
new Float:vOrigin[3]
while(!feof(iFile))
{
fgets(iFile, szData, charsmax(szData))
trim(szData)
if(!szData[0]) continue;
parse(szData, x, 15, y, 15, z, 15, szDesc, 31)
vOrigin[0] = str_to_float(x)
vOrigin[1] = str_to_float(y)
vOrigin[2] = str_to_float(z)
spawn_flag(vOrigin, szDesc)
}
fclose( iFile )
}
Save_Flags(ent)
{
new iFile = fopen(g_szConfigFile, "at")
if(!iFile) return
new Float:vOrigin[3]
pev(ent, pev_origin, vOrigin)
fprintf(iFile, "%f %f %f ^"Новое место^"^n", vOrigin[0], vOrigin[1], vOrigin[2])
fclose(iFile)
}
public spawn_flag(const Float:vOrigin[3], const Desc[])
{
new ent = engfunc(EngFunc_CreateNamedEntity, g_iAllocInfoTarget);
if(!ent)return 0
engfunc(EngFunc_SetOrigin, ent, vOrigin)
entity_set_string(ent, EV_SZ_classname, "Flag_Ent")
engfunc(EngFunc_SetModel, ent, Model_Flag)
entity_set_size(ent, Float: {0.0, 0.0, 0.0}, Float: {0.0, 0.0, 0.0})
entity_set_float(ent, EV_FL_framerate, 1.0)
entity_set_int(ent, EV_INT_sequence, 0)
entity_set_float(ent, EV_FL_animtime, halflife_time())
set_pev(ent, pev_body, 0)
entity_set_string(ent, EV_SZ_targetname, Desc)
new entity = engfunc(EngFunc_CreateNamedEntity, g_iAllocInfoTarget2)
if(!entity)return 0
engfunc(EngFunc_SetOrigin, entity, vOrigin)
entity_set_string(entity, EV_SZ_classname, "Flag_Trigger")
entity_set_size(entity, Float: {-15.0, -15.0, 0.0}, Float: {15.0, 15.0, 64.0})
entity_set_int(entity, EV_INT_solid, SOLID_TRIGGER)
entity_set_int(entity, EV_INT_movetype, MOVETYPE_FLY)
set_pev(entity, pev_euser1, ent)
return ent
}
public touch_flag(entity, id)
{
new ent=pev(entity, pev_euser1)
if(fm_cs_get_user_team(id)==pev(ent, pev_body))return
if(pev(ent, pev_iuser1))return
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
write_byte(2)
write_string("dmg_shock")
write_byte(20)
write_byte(20)
write_byte(240)
message_end()
set_pev(ent, pev_iuser1, get_pcvar_num(g_iCvar[2]))
message_begin(MSG_ONE, 108, _, id)
write_byte(get_pcvar_num(g_iCvar[2]))
write_byte(0)
message_end()
new info[2]
info[0] = ent
info[1] = id
set_task(1.0, "flag_refresh", ent+636, info, 2, "b")
}
public flag_refresh(const info[])
{
new ent=info[0]
new id=info[1]
if(!is_user_connected(id)){
remove_task(ent+636)
set_pev(ent, pev_iuser1, 0)
return
}
new Float:flOrigin[3], Float:flOrigin2[3]
pev(id, pev_origin, flOrigin)
pev(ent, pev_origin, flOrigin2)
new Float:flDistance = get_distance_f(flOrigin, flOrigin2)
if(flDistance>80.0||!is_user_alive(id)){
message_begin(MSG_ONE, 108, _, id)
write_byte(0)
write_byte(0)
message_end()
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
write_byte(0)
write_string("dmg_shock")
write_byte(20)
write_byte(20)
write_byte(240)
message_end()
remove_task(ent+636)
set_pev(ent, pev_iuser1, 0)
return
}
set_pev(ent, pev_iuser1, pev(ent, pev_iuser1)-1)
if(!pev(ent, pev_iuser1)){
new szDesc[32]
pev(ent, pev_targetname, szDesc, charsmax(szDesc))
if(fm_cs_get_user_team(id)==2){
if(pev(ent, pev_body))g_T_Flags--
g_CT_Flags++
}else{
g_T_Flags++
if(pev(ent, pev_body))g_CT_Flags--
}
set_pev(ent, pev_body, fm_cs_get_user_team(id))
for(new i=0;i<33;i++)
{
if(!is_user_connected(i)) continue
if(i==id) colored_print(i, "!gВы!t захватили флаг !g(%s)", szDesc)
else colored_print(i, "!g%s!t захватили флаг !g(%s)", fm_cs_get_user_team(id)==2?"Контр Террористы":"Террористы", szDesc)
}
remove_task(ent+636)
}
}
stock fm_cs_get_user_team(id)
{
if (pev_valid(id) != 2) return 0
return get_pdata_int(id, 114, 5)
}[/code]
Объясните как правильно сделать замену. А то заменял, но ошибка при компиляции.
-
wantip01
-
- Сообщения: 68
- Зарегистрирован: 14 авг 2016, 15:53
- Благодарил (а): 7 раз.
- Поблагодарили: 1 раз.
- Опыт программирования: Около 6 месяцев
- Языки программирования: Counter-Strike 1.6
RevCrew » 06 ноя 2016, 10:18
Подключить нужные инклуды надо
- Код: Выделить всё
new g_iAllocInfoTarget, g_iAllocInfoTarget2
new g_szConfigFile[128];
new g_CT_Flags, g_T_Flags
new g_iCvar[5]
public plugin_init()
{
register_clcmd("say !2", "clcmd_test")
register_touch("Flag_Trigger", "player", "touch_flag")
g_iCvar[0]=register_cvar("f_time_reward", "60")
g_iCvar[1]=register_cvar("f_reward", "200")
g_iCvar[2]=register_cvar("f_time_capture", "20")
set_task(get_pcvar_float(g_iCvar[0]), "Task_Reward", 7738,_,_,"b")
}
public plugin_precache()
{
precache_model(Model_Flag)
}
public Task_Reward()
{
new id, reward=get_pcvar_num(g_iCvar[1])
for (id = 0; id <= 32; id++)
{
if(!is_user_connected(id))continue
reward=get_pcvar_num(g_iCvar[1])
if(fm_cs_get_user_team(id)==2&&g_CT_Flags)
{
reward*=g_CT_Flags
dm_set_user_money(id, dm_get_user_money(id)+reward)
}
else if(fm_cs_get_user_team(id)==1&&g_T_Flags)
{
reward*=g_T_Flags
dm_set_user_money(id, dm_get_user_money(id)+reward)
}
}
}
public clcmd_test(id)
{
new Float:origin[3]
pev(id, pev_origin, origin)
origin[2]-=7.0
new ent=spawn_flag(origin, "Новое место")
Save_Flags(ent)
}
public plugin_cfg()
{
g_iAllocInfoTarget = engfunc(EngFunc_AllocString, "cycler_sprite")
g_iAllocInfoTarget2 = engfunc(EngFunc_AllocString, "trigger_multiple")
new file[128]; get_localinfo("amxx_configsdir",file,63)
format(file, 127, "%s/test_cvars/flags.cfg", file)
if(file_exists(file)) server_cmd("exec %s", file), server_exec()
load_flags()
}
public load_flags()
{
new szMapName[32]
get_mapname(szMapName, 31)
strtolower(szMapName)
formatex(g_szConfigFile, 127, "addons/amxmodx/configs/flags")
if( !dir_exists(g_szConfigFile))
{
mkdir(g_szConfigFile)
format(g_szConfigFile, 127, "%s/%s.txt", g_szConfigFile, szMapName )
return
}
format(g_szConfigFile, 127, "%s/%s.txt", g_szConfigFile, szMapName)
if(!file_exists(g_szConfigFile))
{
fopen(g_szConfigFile, "at")
return
}
new iFile = fopen( g_szConfigFile, "rt" )
if(!iFile) return
new x[16], y[16], z[16], szDesc[32], szData[charsmax(x) + charsmax(y) + charsmax(z) + charsmax(szDesc)]
new Float:vOrigin[3]
while(!feof(iFile))
{
fgets(iFile, szData, charsmax(szData))
trim(szData)
if(!szData[0]) continue;
parse(szData, x, 15, y, 15, z, 15, szDesc, 31)
vOrigin[0] = str_to_float(x)
vOrigin[1] = str_to_float(y)
vOrigin[2] = str_to_float(z)
spawn_flag(vOrigin, szDesc)
}
fclose( iFile )
}
Save_Flags(ent)
{
new iFile = fopen(g_szConfigFile, "at")
if(!iFile) return
new Float:vOrigin[3]
pev(ent, pev_origin, vOrigin)
fprintf(iFile, "%f %f %f ^"Новое место^"^n", vOrigin[0], vOrigin[1], vOrigin[2])
fclose(iFile)
}
public spawn_flag(const Float:vOrigin[3], const Desc[])
{
new ent = engfunc(EngFunc_CreateNamedEntity, g_iAllocInfoTarget);
if(!ent)return 0
engfunc(EngFunc_SetOrigin, ent, vOrigin)
entity_set_string(ent, EV_SZ_classname, "Flag_Ent")
engfunc(EngFunc_SetModel, ent, Model_Flag)
entity_set_size(ent, Float: {0.0, 0.0, 0.0}, Float: {0.0, 0.0, 0.0})
entity_set_float(ent, EV_FL_framerate, 1.0)
entity_set_int(ent, EV_INT_sequence, 0)
entity_set_float(ent, EV_FL_animtime, halflife_time())
set_pev(ent, pev_body, 0)
entity_set_string(ent, EV_SZ_targetname, Desc)
new entity = engfunc(EngFunc_CreateNamedEntity, g_iAllocInfoTarget2)
if(!entity)return 0
engfunc(EngFunc_SetOrigin, entity, vOrigin)
entity_set_string(entity, EV_SZ_classname, "Flag_Trigger")
entity_set_size(entity, Float: {-15.0, -15.0, 0.0}, Float: {15.0, 15.0, 64.0})
entity_set_int(entity, EV_INT_solid, SOLID_TRIGGER)
entity_set_int(entity, EV_INT_movetype, MOVETYPE_FLY)
set_pev(entity, pev_euser1, ent)
return ent
}
public touch_flag(entity, id)
{
new ent=pev(entity, pev_euser1)
if(fm_cs_get_user_team(id)==pev(ent, pev_body))return
if(pev(ent, pev_iuser1))return
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
write_byte(2)
write_string("dmg_shock")
write_byte(20)
write_byte(20)
write_byte(240)
message_end()
set_pev(ent, pev_iuser1, get_pcvar_num(g_iCvar[2]))
message_begin(MSG_ONE, 108, _, id)
write_byte(get_pcvar_num(g_iCvar[2]))
write_byte(0)
message_end()
new info[2]
info[0] = ent
info[1] = id
set_task(1.0, "flag_refresh", ent+636, info, 2, "b")
}
public flag_refresh(const info[])
{
new ent=info[0]
new id=info[1]
if(!is_user_connected(id)){
remove_task(ent+636)
set_pev(ent, pev_iuser1, 0)
return
}
new Float:flOrigin[3], Float:flOrigin2[3]
pev(id, pev_origin, flOrigin)
pev(ent, pev_origin, flOrigin2)
new Float:flDistance = get_distance_f(flOrigin, flOrigin2)
if(flDistance>80.0||!is_user_alive(id)){
message_begin(MSG_ONE, 108, _, id)
write_byte(0)
write_byte(0)
message_end()
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
write_byte(0)
write_string("dmg_shock")
write_byte(20)
write_byte(20)
write_byte(240)
message_end()
remove_task(ent+636)
set_pev(ent, pev_iuser1, 0)
return
}
set_pev(ent, pev_iuser1, pev(ent, pev_iuser1)-1)
if(!pev(ent, pev_iuser1)){
new szDesc[32]
pev(ent, pev_targetname, szDesc, charsmax(szDesc))
if(fm_cs_get_user_team(id)==2){
if(pev(ent, pev_body))g_T_Flags--
g_CT_Flags++
}else{
g_T_Flags++
if(pev(ent, pev_body))g_CT_Flags--
}
set_pev(ent, pev_body, fm_cs_get_user_team(id))
for(new i=0;i<33;i++)
{
if(!is_user_connected(i)) continue
if(i==id) client_print_color(i, NORMAL, "!gВы!t захватили флаг !g(%s)", szDesc)
else client_print_color(i, NORMAL, "!g%s!t захватили флаг !g(%s)", fm_cs_get_user_team(id)==2?"Контр Террористы":"Террористы", szDesc)
}
remove_task(ent+636)
}
}
stock fm_cs_get_user_team(id)
{
if (pev_valid(id) != 2) return 0
return get_pdata_int(id, 114, 5)
}
-
RevCrew
-
- Сообщения: 1648
- Зарегистрирован: 15 июл 2013, 20:45
- Благодарил (а): 273 раз.
- Поблагодарили: 357 раз.
- Языки программирования: Unkown
mega18 » 06 июл 2018, 03:01
Не вкурсе как убрать префикс [DM] в чате? А то везде этот префикс высвечивается, в модулях этого префикса нету.
-
mega18
-
- Сообщения: 7
- Зарегистрирован: 13 май 2018, 22:12
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#
gamingEx » 06 июл 2018, 08:57
mega18, загляни в инклуд dm_chat.inc. Вероятно, что находится там
-
gamingEx
-
- Сообщения: 121
- Зарегистрирован: 07 окт 2017, 20:48
- Благодарил (а): 0 раз.
- Поблагодарили: 19 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: Swift, C++, PHP, Ruby, JS
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: sb123 и гости: 7