AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   About this plugin (https://forums.alliedmods.net/showthread.php?t=251990)

nixh 11-23-2014 13:22

About this plugin
 
Does anyone knows why this plugin doesn't work? because im out of ideas. :cry:

PHP Code:

#include <amxmodx>
#include <engine>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <colorchat>

#define PLUGIN "JailBreak Pets"
#define VERSION "1.0"
#define AUTHOR "OverGame"

#pragma tabsize 0

new g_Cvar[5]

new const 
gModel[] = "models/player/wolf/wolf.mdl"
new const gClassname[] = "JBDog"

new g_Name[32], g_Temp[10]
new 
Players[32], NumPlayer
new g_Attackg_AScore

enum _
:GIBS
{
HEAD,
LEG,
BONE,
LUNG,
GIB
}

new 
gModelGibs[GIBS]
new 
gSpriteBlood

new iNPC_ID
new iPlayer_ID

new Float:fNPCOrigin[3]

public 
plugin_init()
{
register_plugin(PLUGINVERSIONAUTHOR)

register_think(gClassname"NPCThink")

g_Cvar[1] = register_cvar("jbdog_health""200")
g_Cvar[2] = register_cvar("jbdog_speed""350")
g_Cvar[3] = register_cvar("jbdog_distance""100")

register_clcmd("petsmenu""pets_menu")

register_dictionary("jbpets_lang.txt")
}

public 
plugin_precache()
{
precache_modelgModel )

gModelGibs[HEAD] = precache_model("models/gib_skull.mdl")
gModelGibs[LEG] = precache_model("models/gib_legbone.mdl")
gModelGibs[BONE] = precache_model("models/gib_b_bone.mdl")
gModelGibs[LUNG] = precache_model("models/gib_lung.mdl")
gModelGibs[GIB] = precache_model("models/gib_b_gib.mdl")

gSpriteBlood precache_model("sprites/blood.spr")

}

public 
pets_menu(id)
{
static 
s_MenuItem[64]
formatex(s_MenuItemcharsmax(s_MenuItem), "\d[%L]\r %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"MENU_NAME1")
new 
menu menu_create(s_MenuItem"pets_hand" )

if ( 
get_user_flags(id) & ADMIN_LEVEL_C && get_user_team(id) == )
{
menu_additem(menu"\yУстановить координаты","1")
menu_additem(menu"\yСоздатель питомца","2")
menu_additem(menu"\yНатравить на игрока","3")
menu_additem(menu"\yСледовать за игроком","4")
menu_additem(menu"\yПозвать к себе","5")
} else {
menu_additem(menu"\dУстановить координаты","1")
menu_additem(menu"\dСоздатель питомца","2")
menu_additem(menu"\dНатравить на игрока","3")
menu_additem(menu"\dСледовать за игроком","4")
menu_additem(menu"\dПозвать к себе","5")
}

menu_setprop(menuMPROP_BACKNAME"Назад")
menu_setprop(menuMPROP_NEXTNAME"Далее")
menu_setprop(menuMPROP_EXITNAME"Выход")

menu_display(id,menu,0)
return 
PLUGIN_HANDLED
}

public 
pets_hand(idmenuitem)
{
if(
item == MENU_EXIT)
{
menu_destroy(menu)
return 
PLUGIN_HANDLED
}

new 
data[6], iName[64], accesscallback
menu_item_getinfo
(menuitemaccessdata5iName63callback)

new 
key str_to_num(data)

switch(
key)
{
case 
1:{
if ( 
get_user_flags(id) & ADMIN_LEVEL_C && get_user_team(id) == )
{
ColorChat(id,NORMAL,"^4[%L]^1 %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"Y_X_PET")
NPCOrigin(id)
pets_menu(id)
} else {
ColorChat(id,NORMAL,"^4[%L]^1 %L^3 %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"FLAG_NO"LANG_PLAYER"FLAG_ON_PET")
pets_menu(id)
}
}
case 
2:{
if ( 
get_user_flags(id) & ADMIN_LEVEL_C && get_user_team(id) == )
{
NPCCreate(id)
pets_menu(id)
} else {
ColorChat(id,NORMAL,"^4[%L]^1 %L^3 %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"FLAG_NO"LANG_PLAYER"FLAG_ON_PET")
pets_menu(id)
}
}
case 
3:{
if ( 
get_user_flags(id) & ADMIN_LEVEL_C && get_user_team(id) == )
{
pets_attack_menu(id)
g_Attack 0
} else {
ColorChat(id,NORMAL,"^4[%L]^1 %L^3 %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"FLAG_NO"LANG_PLAYER"FLAG_ON_PET")
pets_menu(id)
}
}
case 
4:{
if ( 
get_user_flags(id) & ADMIN_LEVEL_C && get_user_team(id) == )
{
pets_go_menu(id)
g_Attack 0
} else {
ColorChat(id,NORMAL,"^4[%L]^1 %L^3 %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"FLAG_NO"LANG_PLAYER"FLAG_ON_PET")
pets_menu(id)
}
}
case 
5:{
if ( 
get_user_flags(id) & ADMIN_LEVEL_C && get_user_team(id) == )
{
iPlayer_ID id
g_Attack 
0
} else {
ColorChat(id,NORMAL,"^4[%L]^1 %L^3 %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"FLAG_NO"LANG_PLAYER"FLAG_ON_PET")
pets_menu(id)
}
}
}
return 
PLUGIN_HANDLED
}

public 
pets_go_menu(id)
{
static 
s_MenuItem2[255]
formatex(s_MenuItem2charsmax(s_MenuItem2), "\d[%L]\r %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"MENU_NAME2")
new 
menu menu_create(s_MenuItem2"pgo_hand")

get_players(PlayersNum"ch")

for(new 
iiNumi++)
{
Player Players[i]

get_user_name(Playerg_Namecharsmax(g_Name))
num_to_str(Playerg_Tempcharsmax(g_Temp))
menu_additem(menug_Nameg_Temp0)
}

menu_setprop(menuMPROP_NEXTNAME"Далее")
menu_setprop(menuMPROP_BACKNAME"Назад")
menu_setprop(menuMPROP_EXITNAME"Выход^n^n\dАвтор: OverGame^nСайт: WwW.OVERCS.Ru")

menu_display(idmenu)
return 
PLUGIN_HANDLED
}

public 
pgo_hand(idmenuitem)
{
if (
item == MENU_EXIT)
{
menu_destroy(menu)
return 
PLUGIN_HANDLED;
}

new 
s_Data[6], s_Name[64], i_Accessi_Callback
menu_item_getinfo
(menuitemi_Accesss_Datacharsmax(s_Data), s_Namecharsmax(s_Name), i_Callback)

Player str_to_num(s_Data)
iPlayer_ID Player

return PLUGIN_HANDLED
}

public 
pets_attack_menu(id)
{
static 
s_MenuItem2[255]
formatex(s_MenuItem2charsmax(s_MenuItem2), "\d[%L]\r %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"MENU_NAME2")
new 
menu menu_create(s_MenuItem2"pattack_hand")

get_players(PlayersNum"ch")

for(new 
iiNumi++)
{
Player Players[i]

get_user_name(Playerg_Namecharsmax(g_Name))
num_to_str(Playerg_Tempcharsmax(g_Temp))
menu_additem(menug_Nameg_Temp0)
}

menu_setprop(menuMPROP_NEXTNAME"Далее")
menu_setprop(menuMPROP_BACKNAME"Назад")
menu_setprop(menuMPROP_EXITNAME"Выход^n^n\dАвтор: OverGame^nСайт: WwW.OVERCS.Ru")

menu_display(idmenu)
return 
PLUGIN_HANDLED
}

public 
pattack_hand(idmenuitem)
{
if (
item == MENU_EXIT)
{
menu_destroy(menu)
return 
PLUGIN_HANDLED;
}

new 
s_Data[6], s_Name[64], i_Accessi_Callback
menu_item_getinfo
(menuitemi_Accesss_Datacharsmax(s_Data), s_Namecharsmax(s_Name), i_Callback)

Player str_to_num(s_Data)
iPlayer_ID Player
g_Attack 
1

return PLUGIN_HANDLED
}

public 
NPCOrigin(id)
{
entity_get_vector(idEV_VEC_originfNPCOrigin)
//client_print(id, print_chat, "[NPC]Origin create")
}

public 
NPCCreate(id)

iPlayer_ID id

if(iNPC_ID)
{
remove_entity(iNPC_ID)
iNPC_ID 0
}

iNPC_ID create_entity("info_target")

if(
pev_validiNPC_ID ))
{
ColorChat(id,NORMAL,"^4[%L]^1 %L"LANG_PLAYER"PRIFIX"LANG_PLAYER"PET_CREATE")
}else{
//client_print(id, print_chat, "[NPC]Error create")
return PLUGIN_HANDLED
}

entity_set_origin(iNPC_IDfNPCOrigin)

entity_set_float(iNPC_IDEV_FL_takedamage,1.0)

new 
Float:fHealth floatget_pcvar_numg_Cvar[1] ))
entity_set_float(iNPC_IDEV_FL_healthfHealth)

entity_set_model(iNPC_IDgModel)
entity_set_string(iNPC_IDEV_SZ_classnamegClassname)

entity_set_int(iNPC_IDEV_INT_solidSOLID_BBOX)
entity_set_int(iNPC_IDEV_INT_movetypeMOVETYPE_PUSHSTEP)

entity_set_size(iNPC_IDFloat:{-16.0, -16.0, -36.0}, Float:{16.016.036.0})

entity_set_float(iNPC_IDEV_FL_nextthinkhalflife_time() + 0.01)

set_pev(iNPC_IDpev_enemy0)
entity_set_int(iNPC_IDEV_INT_gamestate,1)

entity_set_int(iNPC_IDEV_INT_sequence1)
entity_set_float(iNPC_IDEV_FL_animtimeget_gametime())
entity_set_float(iNPC_IDEV_FL_framerate1.0)
entity_set_float(iNPC_IDEV_FL_frame0.0)

RegisterHamFromEntity(Ham_KillediNPC_ID"NPCKilled")

new 
iWeapon create_entity("info_target")

entity_set_int(iWeaponEV_INT_solidSOLID_NOT)
entity_set_int(iWeaponEV_INT_movetypeMOVETYPE_FOLLOW)
entity_set_edict(iWeaponEV_ENT_aimentiNPC_ID)

return 
PLUGIN_HANDLED
}

public 
damage_attack(id)
{
if ( 
g_AScore <= )
{

set_user_health(Playerget_user_health(Player) - 5)
g_AScore += 1
if ( g_AScore == )
{
g_Attack 0
}

}
}

public 
NPCThinkiEntity )
{
if(!
is_valid_entiEntity ))
return 
FMRES_IGNORED

new Float:fNOrigin[3], Float:fPOrigin[3//Сюда запишем координаты NPC и игрока
new Float:fDistance //Сюда запишем расстяние между ними

pev(iEntitypev_originfNOrigin//Получаем координаты NPC
pev(iPlayer_IDpev_originfPOrigin//Получаем координаты игрока

fDistance get_distance_f(fNOriginfPOrigin//Получаем дистанцию между ними

if(fDistance <= floatget_pcvar_numg_Cvar[3] ) )) //Если дистация межде указанной
{
//client_print(iPlayer_ID, print_center, "[NPC]I caught up with you")

if ( g_Attack == )
{
if ( 
is_user_connected(Player) && is_user_alive(Player) )
{
set_task(2.0,"damage_attack",0,_,_,"a",5)
g_AScore 0
}
}

if(
pev(iEntitypev_sequence) != 1//Если анимация npc установлена не стоячая
{
entity_set_int(iEntityEV_INT_sequence1//Задаем анимацию стоячую
entity_set_float(iEntityEV_FL_animtimeget_gametime()) //Задаем время анимации
entity_set_float(iEntityEV_FL_framerate1.0//Задаем скорость анимации
entity_set_float(iEntityEV_FL_frame0.0//Задаем начальный кадр
}
}else{
if(
pev(iEntitypev_sequence) != 4//Если анимация npc установлена не бега
{
entity_set_int(iEntityEV_INT_sequence4//Задаем анимацию бега
entity_set_float(iEntityEV_FL_animtimeget_gametime()) //Задаем время анимации
entity_set_float(iEntityEV_FL_framerate1.0//Задаем скорость анимации
entity_set_float(iEntityEV_FL_frame0.0//Задаем начальный кадр
}

new 
Float:fAngles[3//Сюда запишем координаты, куда должен будет смотреть NPC
new Float:fVelocity[3//Сюда запишем координаты, куда будет бежать NPC

entity_get_vector(iEntityEV_VEC_anglesfAngles//Получаем

new Float:fX fPOrigin[0] - fNOrigin[0//Расчитываем координаты x
new Float:fZ fPOrigin[1] - fNOrigin[1//Расчитываем координаты z

new Float:fRadian
fRadian 
floatatan(fZ/fXradian//Получаем угол

fAngles[1] = fRadian * (180 3.14//Приваиваем координаты

if(fPOrigin[0] < fNOrigin[0]) //Если координаты игрока относительно x меньше NPC`овскивх
{
fAngles[1] = fAngles[1] - 180.0 //Разворачиваем его
}else{
fAngles[1] = fRadian * (180 3.14//Записываем координаты
}

new 
Float:fSpeed fDistance floatget_pcvar_numg_Cvar[2] ) ) //Задаем скорость

//Записываем координаты куда бежать
fVelocity[0] = (fPOrigin[0] - fNOrigin[0]) / fSpeed
fVelocity
[1] = (fPOrigin[1] - fNOrigin[1]) / fSpeed
fVelocity
[2] = (fPOrigin[2] - fNOrigin[2]) / fSpeed

entity_set_vector
(iEntityEV_VEC_anglesfAngles//Присваиваем новые координаты куда смотреть
entity_set_vector(iEntityEV_VEC_velocityfVelocity//Присваиваем новые координаты куда бежать
}
entity_set_float(iEntityEV_FL_nextthinkhalflife_time() + 0.01//Повторяем
return FMRES_HANDLED
}

public 
NPCKillediEntity )
{
new 
iEntity2 create_entity("info_target"//Создаем нового, тот пропал

if(pev_validiEntity2 )) //Проверяем, создан ли объект
{
//client_print(iPlayer_ID, print_chat, "[NPC]Create Dead create") //Если да, пишем, что создан
}else{
//client_print(iPlayer_ID, print_chat, "[NPC]Error create") //Иначе выводим
return PLUGIN_HANDLED //Прекращаем дальшейнее выполнение функции
}

new 
Float:fOrigin[3], Float:fAngles[3//Запишем, как стоял старый NPC

pev(iEntitypev_originfOrigin//Получаем координаты
pev(iEntitypev_anglesfAngles//Получаем куда смотрит

entity_set_origin(iEntity2fOrigin//Присваиваем
entity_set_vector(iEntity2EV_VEC_anglesfAngles//Присваиваем

entity_set_model(iEntity2gModel//Задаем модель

entity_set_size(iNPC_IDFloat:{-16.0, -16.0, -36.0}, Float:{16.016.036.0}) //Задаем размеры( не путать с размером модели )

entity_set_int(iEntity2EV_INT_sequence108//Задаем анимацию смерти
entity_set_float(iEntity2EV_FL_animtimeget_gametime()) //Задаем время анимации
entity_set_float(iEntity2EV_FL_framerate1.0//Задаем скорость анимации
entity_set_float(iEntity2EV_FL_frame0.0//Задаем начальный кадр

set_task(10.0"GibsNPC"iEntity2//Разорвем на куски npc через 10 сек и уничтожим его.
return PLUGIN_HANDLED //конец
}

public 
GibsNPCiEntity )
{
new 
Float:fOrigin[3//Куда запишем
pev(iEntitypev_originfOrigin//Получаем координаты

for(new isizeof gModelGibsi++) //Разбрасываем кости
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_MODEL)
engfunc(EngFunc_WriteCoordfOrigin[0])
engfunc(EngFunc_WriteCoordfOrigin[1])
engfunc(EngFunc_WriteCoordfOrigin[2])
write_coord(random_num(100400))
write_coord(random_num(100400))
write_coord(random_num(100400))
write_angle(random361 ))
write_short(gModelGibs[i])
write_byte(1)
write_byte(125)
message_end()
}

//Создаем кровь
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
write_byte(TE_BLOODSPRITE)
engfunc(EngFunc_WriteCoordfOrigin[0])
engfunc(EngFunc_WriteCoordfOrigin[1])
engfunc(EngFunc_WriteCoordfOrigin[2])
write_short(gSpriteBlood)
write_short(gSpriteBlood)
write_byte(250)
write_byte(20)
message_end()

remove_entityiEntity //Уничтожаем его нахер
//client_print(iPlayer_ID, print_chat, "[NPC]Terminated") //Выводим сообщение что ли



Fuck For Fun 11-23-2014 13:29

Re: About this plugin
 
error logs?

nixh 11-23-2014 13:32

Re: About this plugin
 
sorry but there is no errors.

Fuck For Fun 11-23-2014 13:37

Re: About this plugin
 
Maybe u missed models/lang/sprites

nixh 11-23-2014 13:40

Re: About this plugin
 
well i did not miss anything, or this just doesn't work only for me. :(

simanovich 11-24-2014 09:31

Re: About this plugin
 
Why did u blank ur post?


All times are GMT -4. The time now is 17:42.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.