Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Въведение в PAWN скриптинга и поддръжка за същия.
Аватар
lurku
Извън линия
Потребител
Потребител
Мнения: 45
Регистриран на: 15 Юни 2019, 22:07
Се отблагодари: 6 пъти
Получена благодарност: 1 път
Обратна връзка:

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от lurku » 29 Юли 2019, 18:53

Имам проблем с зомбие смокера помагайте.

Проблема:

Код за потвърждение: Избери целия код

L 07/28/2019 - 21:45:48: [AMXX] Displaying debug trace (plugin "zp_zclass_smoker
.amxx")
L 07/28/2019 - 21:45:48: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie_class")
L 07/28/2019 - 21:45:48: [AMXX] [0] zp_zclass_smoker.sma::zp_user_infected_po
st (line 68)
L 07/28/2019 - 21:45:48: [ZP] Invalid Player (0)
L 07/28/2019 - 21:45:48: [AMXX] Displaying debug trace (plugin "zp_zclass_smoker
.amxx")
L 07/28/2019 - 21:45:48: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie_class")
L 07/28/2019 - 21:45:48: [AMXX] [0] zp_zclass_smoker.sma::zp_user_infected_po
st (line 68)
L 07/28/2019 - 21:45:48: [ZP] Invalid Player (0)
L 07/28/2019 - 21:45:48: [AMXX] Displaying debug trace (plugin "zp_zclass_smoker
.amxx")
L 07/28/2019 - 21:45:48: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie_class")
L 07/28/2019 - 21:45:48: [AMXX] [0] zp_zclass_smoker.sma::zp_user_infected_po
st (line 68)
L 07/28/2019 - 21:45:48: [ZP] Invalid Player (0)
L 07/28/2019 - 21:45:48: [AMXX] Displaying debug trace (plugin "zp_zclass_smoker
.amxx")
L 07/28/2019 - 21:45:48: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie_class")
L 07/28/2019 - 21:45:48: [AMXX] [0] zp_zclass_smoker.sma::zp_user_infected_po
st (line 68)
L 07/28/2019 - 21:45:48: [ZP] Invalid Player (0)
L 07/28/2019 - 21:45:48: [AMXX] Displaying debug trace (plugin "zp_zclass_smoker
.amxx")



Плъгина:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>
#include <engine>

#define PLUGIN "[ZP] Class Smoker"
#define VERSION "1.3"
#define AUTHOR "4eRT"

//Main Class, modelT & Sprite Beam
new g_zclass_smoker, g_Line
new const generic_models[][] = { "models/player/zombie_smoker/zombie_smokerT.mdl" } 
//Sounds
new g_sndMiss[] = "zombie_plague/Smoker_TongueHit_miss.wav"
new g_sndDrag[] = "zombie_plague/Smoker_TongueHit_drag.wav"
//Some vars
new g_hooked[33], g_hooksLeft[33], g_unable2move[33], g_ovr_dmg[33]
new Float:g_lastHook[33]
new bool: g_bind_use[33] = false, bool: g_bind_or_not[33] = false, bool: g_drag_i[33] = false
//Cvars
new cvar_maxdrags, cvar_dragspeed, cvar_cooldown, cvar_dmg2stop, cvar_mates, cvar_extrahook, cvar_unb2move, cvar_nemesis, cvar_survivor
//Menu keys
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3
//Smoker Atributes
new const zclass_name[] = { "Smoker" }
new const zclass_info[] = { "Can drag players" }
new const zclass_model[] = { "zombie_source" }
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" }
const zclass_health = 1400
const zclass_speed = 190
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0

public plugin_init()
{
cvar_dragspeed = register_cvar("zp_smoker_dragspeed", "170")
cvar_maxdrags = register_cvar("zp_smoker_maxdrags", "7")
cvar_cooldown = register_cvar("zp_smoker_cooldown", "5")
cvar_dmg2stop = register_cvar("zp_smoker_dmg2stop", "300")
cvar_mates = register_cvar("zp_smoker_mates", "0")
cvar_extrahook = register_cvar("zp_smoker_extrahook", "2")
cvar_unb2move = register_cvar("zp_smoker_unable_move", "1")
cvar_nemesis = register_cvar("zp_smoker_nemesis", "0")
cvar_survivor = register_cvar("zp_smoker_survivor", "1")
register_event("ResetHUD", "newSpawn", "b")
register_event("DeathMsg", "smoker_death", "a")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
register_clcmd("+drag","drag_start", ADMIN_USER, "bind ^"key^" ^"+drag^"")
register_clcmd("-drag","drag_end")
register_menucmd(register_menuid("Do you want to bind V +drag?"), keys, "bind_v_key")
}
public plugin_precache()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_zclass_smoker = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
precache_sound(g_sndDrag)
precache_sound(g_sndMiss)
g_Line = precache_model("sprites/zbeam4.spr")

for (new i = 0; i < sizeof generic_models; i++)
precache_model(generic_models)
}

public zp_user_infected_post(id, infector)
{
if ((zp_get_user_zombie_class(infector) == g_zclass_smoker) && (get_pcvar_num(cvar_extrahook) > 0))
{
g_hooksLeft[infector] = g_hooksLeft[infector] + get_pcvar_num(cvar_extrahook)
set_hudmessage(255, 0, 0, -1.0, 0.45, 0, 0.0, 3.0, 0.01, 0.01, -1)
show_hudmessage(infector, "+%d drag%s!", get_pcvar_num(cvar_extrahook), (get_pcvar_num(cvar_extrahook) < 2) ? "" : "s")
}

if (zp_get_user_zombie_class(id) == g_zclass_smoker)
{
g_hooksLeft[id] = get_pcvar_num(cvar_maxdrags)

if (!g_bind_or_not[id])
{
new menu[192]
format(menu, 191, "Do you want to bind V +drag?^n^n1. Yes^n2. No^n3. Drag on +USE")
show_menu(id, keys, menu)
}
}
}

public newSpawn(id)
{
if (g_hooked[id])
drag_end(id)
}

public drag_start(id) // starts drag, checks if player is Smoker, checks cvars
{	
if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker) && !g_drag_i[id]) {

static Float:cdown
cdown = get_pcvar_float(cvar_cooldown)

if (!is_user_alive(id)) {
client_print(id, print_chat, "[ZP] You can't drag if you are dead!")
return PLUGIN_HANDLED
}

if (g_hooksLeft[id] <= 0) {
client_print(id, print_chat, "[ZP] You can't drag anymore!")
return PLUGIN_HANDLED
}

if (get_gametime() - g_lastHook[id] < cdown) {
client_print(id, print_chat, "[ZP] Wait %.f0 sec. to drag again!", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id]))
return PLUGIN_HANDLED
}

new hooktarget, body
get_user_aiming(id, hooktarget, body)

if (zp_get_user_nemesis(id) && get_pcvar_num(cvar_nemesis) == 0) {
client_print(id, print_chat, "[ZP] You can't drag if you are Nemesis!")
return PLUGIN_HANDLED
}

if (is_user_alive(hooktarget)) {
if (!zp_get_user_zombie(hooktarget))
{
if (zp_get_user_survivor(hooktarget) && get_pcvar_num(cvar_survivor) == 0) {
client_print(id, print_chat, "[ZP] You can't drag Survivor!")
return PLUGIN_HANDLED
}

g_hooked[id] = hooktarget
emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
}
else
{
if (get_pcvar_num(cvar_mates) == 1)
{
g_hooked[id] = hooktarget
emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
}
else
{
client_print(id, print_chat, "[ZP] You can't drag teammates!")
return PLUGIN_HANDLED
}
}

if (get_pcvar_float(cvar_dragspeed) <= 0.0)
cvar_dragspeed = 1

new parm[2]
parm[0] = id
parm[1] = hooktarget

set_task(0.1, "smoker_reelin", id, parm, 2, "b")
harpoon_target(parm)

g_hooksLeft[id]--
client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
g_drag_i[id] = true

if(get_pcvar_num(cvar_unb2move) == 1)
g_unable2move[hooktarget] = true

if(get_pcvar_num(cvar_unb2move) == 2)
g_unable2move[id] = true

if(get_pcvar_num(cvar_unb2move) == 3)
{
g_unable2move[hooktarget] = true
g_unable2move[id] = true
}
} else {
g_hooked[id] = 33
noTarget(id)
emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
g_drag_i[id] = true
g_hooksLeft[id]--
client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
}
}
else
return PLUGIN_HANDLED

return PLUGIN_CONTINUE
}

public smoker_reelin(parm[]) // dragging player to smoker
{
new id = parm[0]
new victim = parm[1]

if (!g_hooked[id] || !is_user_alive(victim))
{
drag_end(id)
return
}

new Float:fl_Velocity[3]
new idOrigin[3], vicOrigin[3]

get_user_origin(victim, vicOrigin)
get_user_origin(id, idOrigin)

new distance = get_distance(idOrigin, vicOrigin)

if (distance > 1) {
new Float:fl_Time = distance / get_pcvar_float(cvar_dragspeed)

fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
} else {
fl_Velocity[0] = 0.0
fl_Velocity[1] = 0.0
fl_Velocity[2] = 0.0
}

entity_set_vector(victim, EV_VEC_velocity, fl_Velocity) //<- rewritten. now uses engine
}

public drag_end(id) // drags end function
{
g_hooked[id] = 0
beam_remove(id)
remove_task(id)

if (g_drag_i[id])
g_lastHook[id] = get_gametime()

g_drag_i[id] = false
g_unable2move[id] = false
}

public smoker_death() // if smoker dies drag off
{
new id = read_data(2)

beam_remove(id)

if (g_hooked[id])
drag_end(id)
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage) // if take damage drag off
{
if (is_user_alive(attacker) && (get_pcvar_num(cvar_dmg2stop) > 0))
{
g_ovr_dmg[victim] = g_ovr_dmg[victim] + floatround(damage)
if (g_ovr_dmg[victim] >= get_pcvar_num(cvar_dmg2stop))
{
g_ovr_dmg[victim] = 0
drag_end(victim)
return HAM_IGNORED;
}
}

return HAM_IGNORED;
}

public fw_PlayerPreThink(id)
{
if (!is_user_alive(id))
return FMRES_IGNORED

new button = get_user_button(id)
new oldbutton = get_user_oldbutton(id)

if (g_bind_use[id] && zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker))
{
if (!(oldbutton & IN_USE) && (button & IN_USE))
drag_start(id)

if ((oldbutton & IN_USE) && !(button & IN_USE))
drag_end(id)
}

if (!g_drag_i[id]) {
g_unable2move[id] = false
}

if (g_unable2move[id] && get_pcvar_num(cvar_unb2move) > 0)
{
set_pev(id, pev_maxspeed, 1.0)
}

return PLUGIN_CONTINUE
}

public client_disconnect(id) // if client disconnects drag off
{
if (id <= 0 || id > 32)
return

if (g_hooked[id])
drag_end(id)

if(g_unable2move[id])
g_unable2move[id] = false
}

public harpoon_target(parm[]) // set beam (ex. tongue:) if target is player
{
new id = parm[0]
new hooktarget = parm[1]

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(8)	// TE_BEAMENTS
write_short(id)
write_short(hooktarget)
write_short(g_Line)	// sprite index
write_byte(0)	// start frame
write_byte(0)	// framerate
write_byte(200)	// life
write_byte(8)	// width
write_byte(1)	// noise
write_byte(155)	// r, g, b
write_byte(155)	// r, g, b
write_byte(55)	// r, g, b
write_byte(90)	// brightness
write_byte(10)	// speed
message_end()
}

public bind_v_key(id, keys)
{
g_bind_or_not[id] = true
switch(keys)
{
case 0:
client_cmd(id, "bind v ^"+drag^"")

case 1:
client_print(id, print_chat, "[ZP] To drag player to youself (bind ^'^'key^'^' ^'^'+drag^'^') hold binded key")

case 2:
g_bind_use[id] = true

default:
g_bind_or_not[id] = false
}

return PLUGIN_HANDLED
}

public noTarget(id) // set beam if target isn't player
{
new endorigin[3]

get_user_origin(id, endorigin, 3)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte( TE_BEAMENTPOINT ); // TE_BEAMENTPOINT
write_short(id)
write_coord(endorigin[0])
write_coord(endorigin[1])
write_coord(endorigin[2])
write_short(g_Line) // sprite index
write_byte(0)	// start frame
write_byte(0)	// framerate
write_byte(200)	// life
write_byte(8)	// width
write_byte(1)	// noise
write_byte(155)	// r, g, b
write_byte(155)	// r, g, b
write_byte(55)	// r, g, b
write_byte(75)	// brightness
write_byte(0)	// speed
message_end()
}

public beam_remove(id) // remove beam
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(99)	//TE_KILLBEAM
write_short(id)	//entity
message_end()
}
Последно промяна от lurku на 29 Юли 2019, 22:26, променено общо 1 път.

Аватар
gattuso1991
Извън линия
Потребител
Потребител
Мнения: 8
Регистриран на: 22 Яну 2018, 15:54

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от gattuso1991 » 29 Юли 2019, 19:16

Код за потвърждение: Избери целия код

/*
*	-----------------------------------
*	-----[ZP] Zombie Class: Smoker-----
*	-----------------------------------
*	------Author: 4eRT (aka pff)-------
*	-----------------------------------
*		About:
*	When Left4Dead came out i immediately thought about Zombie Class Smoker plugin.
*	More later(few days ago) I was playing on Superhero Server when i found Scorpion hero.
*	So it was the way to create this plugin.
*	-----------------------------------
*		Discription:
*	Smoker is another zombie class for zombie plague like Smoker in L4D.
*	He can drags humans by holding "V" like /\...yeah, like Smoker. If Smoker receives
*	300 damage by human drag ends. If he falls or hurts more 25 dmg drag ends to.
*	Drag speed, max drags, cooldown, autobind, drag teammates & damage to stop
*	may be customized by Cvars.
*	-----------------------------------
*		Credits:
*	yang - great thanks for his Scorpion superhero plugin where I borrow harpoon&drag code.
*	5c0r-|3i0 - for his converted Smoker sounds.
*	Anggara_nothing - for rewritting Entvars_Set_Vector from Vexd_Utilities to engine. but not very useful :/
*	xPaw - really thx for help optimization plugin. For Entity_Set_Vector.
*	frk_14 - for his Smoker model. (hope you finish it ^^)
*	-----------------------------------
*		Cvars:
*	zp_smoker_maxdrags 10 // how many times Smoker can drag player to himself? def=10
*	zp_smoker_dragspeed 160 // speed of dragging player to Smoker def=160
*	zp_smoker_cooldown 5 // time in sec before you can use drag again. def=5
*	zp_smoker_mates 0 // can Smoker drag teammates to? 1=yes 0=no def=0
*	zp_smoker_bind 1 // autobind key V to +drag. 0=no autobind 1=autobind (v) def=1
*	zp_smoker_dmg2stop 75 // damage to stop dragging def=75
*	-----------------------------------
*		History(beta):
*	0.0 (14.04.09)
*		Most of code converted from sh_scorpion. Added 3 cvars.
*	0.1 (15.04.09)
*		Added cooldown, autobind, damage to stop and its cvars.
*	0.1 (16.04.09)
*		Beta testing. First view works perfectly...<- It was wrong belief...>_<
*	0.2 (17.04.09)
*		Entvars_Set_Vector now uses engine, not Vexd_Utilities.inc
*	0.3 (19.04.09)
*		Fixed cooldown. Now it works more stably. Reduced minimum drag distance.
*	0.3.1 (21.04.09)
*		Cooldown works more, more stably. After re-infecting Smoker can use drag
*		X times(cvar_maxdrags) if drags left when he was zombie last time.
*		Hope i've fixed dragging teammates. Please test it and say: does it work?
*		Added Smoker model(+modelT.mdl precacher).
*	-----------------------------------
*		PS:
*	It's my second useful plugin for amxx so...
*/

#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>
#include <engine>

#define PLUGIN "[ZP] Class Smoker"
#define VERSION "0.3.1"
#define AUTHOR "4eRT"

//Main Class, modelT & Sprite Beam
new g_zclass_smoker, g_Line
new const generic_models[][] = { "models/player/zombie_smoker/zombie_smokerT.mdl" } 
//Sounds
new g_sndMiss[] = "zombie_plague/Smoker_TongueHit_miss.wav"
new g_sndDrag[] = "zombie_plague/Smoker_TongueHit_drag.wav"
//Some vars
new g_hooked[33], g_hooksLeft[33]
new Float:g_lastHook[33]
//Cvars
new cvar_maxdrags, cvar_dragspeed, cvar_cooldown, cvar_dmg2stop, cvar_mates, cvar_bind
//Smoker Atributes
new const zclass_name[] = { "Smoker" }
new const zclass_info[] = { "Can drag players" }
new const zclass_model[] = { "zombie_smoker" }
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" }
const zclass_health = 1400
const zclass_speed = 190
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0

public plugin_init()
{
	cvar_dragspeed = register_cvar("zp_smoker_dragspeed", "160")
	cvar_maxdrags = register_cvar("zp_smoker_maxdrags", "10")
	cvar_cooldown = register_cvar("zp_smoker_cooldown", "5")
	cvar_dmg2stop = register_cvar("zp_smoker_dmg2stop", "75")
	cvar_mates = register_cvar("zp_smoker_mates", "0")
	cvar_bind = register_cvar("zp_smoker_bind", "1")
	register_event("ResetHUD", "newSpawn", "b")
	register_event("DeathMsg", "smoker_death", "a")
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_clcmd("+drag","drag_start", ADMIN_USER, "bind ^"key^" ^"+drag^"")
	register_clcmd("-drag","drag_end")
}
public plugin_precache()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	g_zclass_smoker = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
	precache_sound(g_sndDrag)
	precache_sound(g_sndMiss)
	g_Line = precache_model("sprites/zbeam4.spr")
	
	for (new i = 0; i < sizeof generic_models; i++)
	precache_model(generic_models[i])
}

public zp_user_infected_post(id, infector)
{
	if (zp_get_user_zombie_class(id) == g_zclass_smoker) {
		g_hooksLeft[id] = get_pcvar_num(cvar_maxdrags)
		new mode = get_pcvar_num(cvar_bind)
		
		if (mode == 1) {
			client_cmd(id, "bind v ^"+drag^"")
			client_print(id, print_chat, "[ZP] To drag player to youself hold ^'^'V^'^'")
		}
		if (mode == 0) {
			client_print(id, print_chat, "[ZP] To drag player to youself (bind ^'^'key^'^' ^'^'+drag^'^') hold binded key")
		}
	}
}

public newSpawn(id)
{
	g_lastHook[id] = get_gametime()
	
	beam_remove(id)
	if (g_hooked[id])
		drag_end(id)
}

public drag_start(id) // starts drag, checks if player is Smoker, checks cvars
{
	if (zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zclass_smoker) {
		
		static Float:cdown
		cdown = get_pcvar_float(cvar_cooldown)
		
		if (!is_user_alive(id)) {
			client_print(id, print_chat, "[ZP] You can't drag if you are dead!")
			return
		}

		if (g_hooksLeft[id] <= 0) {
			client_print(id, print_chat, "[ZP] You can't drag anymore!")
			return
		}
			
		if (get_gametime() - g_lastHook[id] < cdown) {
			client_print(id, print_chat, "[ZP] Wait %.fsec. to drag again!", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id]))
			return
		}

		if (g_hooksLeft[id] > 0) {
			g_hooksLeft[id]--
			client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
		}

		new hooktarget, body

		get_user_aiming(id, hooktarget, body)
		
		if (is_user_alive(hooktarget)) {
			if (get_user_team(hooktarget) != get_user_team(id)) {
				g_hooked[id] = hooktarget
				emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
			} else {
				if (get_user_team(hooktarget) == get_user_team(id)) {
					if (get_pcvar_num(cvar_mates) == 0) {
						client_print(id, print_chat, "[ZP] You can't drag teammates!")
						return
					}
					if (get_pcvar_num(cvar_mates) == 1) {
						g_hooked[id] = hooktarget
						emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
					}
				} else {
					g_hooked[id] = 33
					noTarget(id)
					emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
					return
				}
			}

			new parm[2]
			parm[0] = id
			parm[1] = hooktarget
			
			set_task(0.1, "smoker_reelin", id, parm, 2, "b")
			harpoon_target(parm)
		} else {
			g_hooked[id] = 33
			noTarget(id)
			emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
		}
	} else {
		return
	}
}

public smoker_reelin(parm[]) // dragging player to smoker
{
	new id = parm[0]
	new victim = parm[1]

	if (!g_hooked[id])
		return

	if (!is_user_alive(victim)) {
		drag_end(id)
		return
	}

	new Float:fl_Velocity[3]
	new idOrigin[3], vicOrigin[3]

	get_user_origin(victim, vicOrigin)
	get_user_origin(id, idOrigin)

	new distance = get_distance(idOrigin, vicOrigin)

	if (distance > 1) {
		new Float:fl_Time = distance / get_pcvar_float(cvar_dragspeed)

		fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
		fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
		fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
	} else {
		fl_Velocity[0] = 0.0
		fl_Velocity[1] = 0.0
		fl_Velocity[2] = 0.0
	}

	entity_set_vector(victim, EV_VEC_velocity, fl_Velocity) //<- rewritten. now uses engine
}

public drag_end(id) // drags end function
{
	g_hooked[id] = 0
	beam_remove(id)
	remove_task(id)
	
	if (get_gametime() - g_lastHook[id] <= get_pcvar_float(cvar_cooldown) + 0.08) {
		return
	} else {
		g_lastHook[id] = get_gametime()
	}
}

public smoker_death() // if smoker dies drag off
{
	new id = read_data(2)
	
	beam_remove(id)
	
	if (g_hooked[id])
		drag_end(id)
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) // if take damage drag off
{
	if (victim == attacker || !is_user_connected(attacker)) {
		if (damage > 25) {
			drag_end(victim)
			return HAM_IGNORED;
		}
	}
	
	if (get_user_team(attacker) != get_user_team(victim)) {
		if (damage > get_pcvar_num(cvar_dmg2stop)) {
			drag_end(victim)
			return HAM_IGNORED;
		}
	}
		
	return HAM_IGNORED;
}

public client_disconnect(id) // if client disconnects drag off
{
	if (id <= 0 || id > 32)
		return
	
	if (g_hooked[id])
		drag_end(id)
}

public harpoon_target(parm[]) // set beam (ex. tongue:) if target is player
{
	new id = parm[0]
	new hooktarget = parm[1]

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(8)	// TE_BEAMENTS
	write_short(id)
	write_short(hooktarget)
	write_short(g_Line)	// sprite index
	write_byte(0)	// start frame
	write_byte(0)	// framerate
	write_byte(200)	// life
	write_byte(8)	// width
	write_byte(1)	// noise
	write_byte(155)	// r, g, b
	write_byte(155)	// r, g, b
	write_byte(55)	// r, g, b
	write_byte(90)	// brightness
	write_byte(10)	// speed
	message_end()
}

public noTarget(id) // set beam if target isn't player
{
	new endorigin[3]

	get_user_origin(id, endorigin, 3)

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte( TE_BEAMENTPOINT ); // TE_BEAMENTPOINT
	write_short(id)
	write_coord(endorigin[0])
	write_coord(endorigin[1])
	write_coord(endorigin[2])
	write_short(g_Line) // sprite index
	write_byte(0)	// start frame
	write_byte(0)	// framerate
	write_byte(200)	// life
	write_byte(8)	// width
	write_byte(1)	// noise
	write_byte(155)	// r, g, b
	write_byte(155)	// r, g, b
	write_byte(55)	// r, g, b
	write_byte(75)	// brightness
	write_byte(0)	// speed
	message_end()
}

public beam_remove(id) // remove beam
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(99)	//TE_KILLBEAM
	write_short(id)	//entity
	message_end()
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
Пробвай с този и пиши дали всичко е ок

Аватар
mBFF-TheFucKBG
Извън линия
Потребител
Потребител
Мнения: 311
Регистриран на: 09 Ное 2018, 16:40
Местоположение: Сливен
Се отблагодари: 13 пъти
Получена благодарност: 11 пъти

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от mBFF-TheFucKBG » 29 Юли 2019, 20:13

Проблема идва от един native.Нативът е zp_get_zombie_class.
Фенче на СкандаУ <3

Аватар
lurku
Извън линия
Потребител
Потребител
Мнения: 45
Регистриран на: 15 Юни 2019, 22:07
Се отблагодари: 6 пъти
Получена благодарност: 1 път
Обратна връзка:

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от lurku » 29 Юли 2019, 20:41

mBFF-TheFucKBG написа: 29 Юли 2019, 20:13 Проблема идва от един native.Нативът е zp_get_zombie_class.
А ако сложа native zp_get_zombie_class ? И го прекомпилирам ще се оправи ли ?

Аватар
mBFF-TheFucKBG
Извън линия
Потребител
Потребител
Мнения: 311
Регистриран на: 09 Ное 2018, 16:40
Местоположение: Сливен
Се отблагодари: 13 пъти
Получена благодарност: 11 пъти

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от mBFF-TheFucKBG » 29 Юли 2019, 20:53

Дай кода отново, но ползвай ббкода http://prntscr.com/olmdid.
Фенче на СкандаУ <3

Аватар
lurku
Извън линия
Потребител
Потребител
Мнения: 45
Регистриран на: 15 Юни 2019, 22:07
Се отблагодари: 6 пъти
Получена благодарност: 1 път
Обратна връзка:

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от lurku » 29 Юли 2019, 22:12

Ето го и кода Благодаря :)

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>
#include <engine>

#define PLUGIN "[ZP] Class Smoker"
#define VERSION "1.3"
#define AUTHOR "4eRT"

//Main Class, modelT & Sprite Beam
new g_zclass_smoker, g_Line
new const generic_models[][] = { "models/player/zombie_smoker/zombie_smokerT.mdl" } 
//Sounds
new g_sndMiss[] = "zombie_plague/Smoker_TongueHit_miss.wav"
new g_sndDrag[] = "zombie_plague/Smoker_TongueHit_drag.wav"
//Some vars
new g_hooked[33], g_hooksLeft[33], g_unable2move[33], g_ovr_dmg[33]
new Float:g_lastHook[33]
new bool: g_bind_use[33] = false, bool: g_bind_or_not[33] = false, bool: g_drag_i[33] = false
//Cvars
new cvar_maxdrags, cvar_dragspeed, cvar_cooldown, cvar_dmg2stop, cvar_mates, cvar_extrahook, cvar_unb2move, cvar_nemesis, cvar_survivor
//Menu keys
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3
//Smoker Atributes
new const zclass_name[] = { "Smoker" }
new const zclass_info[] = { "Can drag players" }
new const zclass_model[] = { "zombie_source" }
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" }
const zclass_health = 1400
const zclass_speed = 190
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0

public plugin_init()
{
	cvar_dragspeed = register_cvar("zp_smoker_dragspeed", "170")
	cvar_maxdrags = register_cvar("zp_smoker_maxdrags", "7")
	cvar_cooldown = register_cvar("zp_smoker_cooldown", "5")
	cvar_dmg2stop = register_cvar("zp_smoker_dmg2stop", "300")
	cvar_mates = register_cvar("zp_smoker_mates", "0")
	cvar_extrahook = register_cvar("zp_smoker_extrahook", "2")
	cvar_unb2move = register_cvar("zp_smoker_unable_move", "1")
	cvar_nemesis = register_cvar("zp_smoker_nemesis", "0")
	cvar_survivor = register_cvar("zp_smoker_survivor", "1")
	register_event("ResetHUD", "newSpawn", "b")
	register_event("DeathMsg", "smoker_death", "a")
	register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_clcmd("+drag","drag_start", ADMIN_USER, "bind ^"key^" ^"+drag^"")
	register_clcmd("-drag","drag_end")
	register_menucmd(register_menuid("Do you want to bind V +drag?"), keys, "bind_v_key")
}
public plugin_precache()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	g_zclass_smoker = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
	precache_sound(g_sndDrag)
	precache_sound(g_sndMiss)
	g_Line = precache_model("sprites/zbeam4.spr")
	
	for (new i = 0; i < sizeof generic_models; i++)
	precache_model(generic_models[i])
}

public zp_user_infected_post(id, infector)
{
	if ((zp_get_user_zombie_class(infector) == g_zclass_smoker) && (get_pcvar_num(cvar_extrahook) > 0))
	{
		g_hooksLeft[infector] = g_hooksLeft[infector] + get_pcvar_num(cvar_extrahook)
		set_hudmessage(255, 0, 0, -1.0, 0.45, 0, 0.0, 3.0, 0.01, 0.01, -1)
		show_hudmessage(infector, "+%d drag%s!", get_pcvar_num(cvar_extrahook), (get_pcvar_num(cvar_extrahook) < 2) ? "" : "s")
	}
	
	if (zp_get_user_zombie_class(id) == g_zclass_smoker)
	{
		g_hooksLeft[id] = get_pcvar_num(cvar_maxdrags)
		
		if (!g_bind_or_not[id])
		{
			new menu[192]
			format(menu, 191, "Do you want to bind V +drag?^n^n1. Yes^n2. No^n3. Drag on +USE")
			show_menu(id, keys, menu)
		}
	}
}

public newSpawn(id)
{
	if (g_hooked[id])
		drag_end(id)
}

public drag_start(id) // starts drag, checks if player is Smoker, checks cvars
{		
	if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker) && !g_drag_i[id]) {
		
		static Float:cdown
		cdown = get_pcvar_float(cvar_cooldown)

		if (!is_user_alive(id)) {
			client_print(id, print_chat, "[ZP] You can't drag if you are dead!")
			return PLUGIN_HANDLED
		}

		if (g_hooksLeft[id] <= 0) {
			client_print(id, print_chat, "[ZP] You can't drag anymore!")
			return PLUGIN_HANDLED
		}

		if (get_gametime() - g_lastHook[id] < cdown) {
			client_print(id, print_chat, "[ZP] Wait %.f0 sec. to drag again!", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id]))
			return PLUGIN_HANDLED
		}
		
		new hooktarget, body
		get_user_aiming(id, hooktarget, body)
		
		if (zp_get_user_nemesis(id) && get_pcvar_num(cvar_nemesis) == 0) {
			client_print(id, print_chat, "[ZP] You can't drag if you are Nemesis!")
			return PLUGIN_HANDLED
		}
		
		if (is_user_alive(hooktarget)) {
			if (!zp_get_user_zombie(hooktarget))
				{
					if (zp_get_user_survivor(hooktarget) && get_pcvar_num(cvar_survivor) == 0) {
						client_print(id, print_chat, "[ZP] You can't drag Survivor!")
						return PLUGIN_HANDLED
					}
					
					g_hooked[id] = hooktarget
					emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
				}
			else
				{
					if (get_pcvar_num(cvar_mates) == 1)
					{
						g_hooked[id] = hooktarget
						emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
					}
					else
					{
						client_print(id, print_chat, "[ZP] You can't drag teammates!")
						return PLUGIN_HANDLED
					}
				}

			if (get_pcvar_float(cvar_dragspeed) <= 0.0)
				cvar_dragspeed = 1
			
			new parm[2]
			parm[0] = id
			parm[1] = hooktarget
			
			set_task(0.1, "smoker_reelin", id, parm, 2, "b")
			harpoon_target(parm)
			
			g_hooksLeft[id]--
			client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
			g_drag_i[id] = true
			
			if(get_pcvar_num(cvar_unb2move) == 1)
				g_unable2move[hooktarget] = true
				
			if(get_pcvar_num(cvar_unb2move) == 2)
				g_unable2move[id] = true
				
			if(get_pcvar_num(cvar_unb2move) == 3)
			{
				g_unable2move[hooktarget] = true
				g_unable2move[id] = true
			}
		} else {
			g_hooked[id] = 33
			noTarget(id)
			emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
			g_drag_i[id] = true
			g_hooksLeft[id]--
			client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
		}
	}
	else
		return PLUGIN_HANDLED
	
	return PLUGIN_CONTINUE
}

public smoker_reelin(parm[]) // dragging player to smoker
{
	new id = parm[0]
	new victim = parm[1]

	if (!g_hooked[id] || !is_user_alive(victim))
	{
		drag_end(id)
		return
	}

	new Float:fl_Velocity[3]
	new idOrigin[3], vicOrigin[3]

	get_user_origin(victim, vicOrigin)
	get_user_origin(id, idOrigin)

	new distance = get_distance(idOrigin, vicOrigin)

	if (distance > 1) {
		new Float:fl_Time = distance / get_pcvar_float(cvar_dragspeed)

		fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
		fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
		fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
	} else {
		fl_Velocity[0] = 0.0
		fl_Velocity[1] = 0.0
		fl_Velocity[2] = 0.0
	}

	entity_set_vector(victim, EV_VEC_velocity, fl_Velocity) //<- rewritten. now uses engine
}

public drag_end(id) // drags end function
{
	g_hooked[id] = 0
	beam_remove(id)
	remove_task(id)
	
	if (g_drag_i[id])
		g_lastHook[id] = get_gametime()
	
	g_drag_i[id] = false
	g_unable2move[id] = false
}

public smoker_death() // if smoker dies drag off
{
	new id = read_data(2)
	
	beam_remove(id)
	
	if (g_hooked[id])
		drag_end(id)
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage) // if take damage drag off
{
	if (is_user_alive(attacker) && (get_pcvar_num(cvar_dmg2stop) > 0))
	{
		g_ovr_dmg[victim] = g_ovr_dmg[victim] + floatround(damage)
		if (g_ovr_dmg[victim] >= get_pcvar_num(cvar_dmg2stop))
		{
			g_ovr_dmg[victim] = 0
			drag_end(victim)
			return HAM_IGNORED;
		}
	}

	return HAM_IGNORED;
}

public fw_PlayerPreThink(id)
{
	if (!is_user_alive(id))
		return FMRES_IGNORED
	
	new button = get_user_button(id)
	new oldbutton = get_user_oldbutton(id)
	
	if (g_bind_use[id] && zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker))
	{
		if (!(oldbutton & IN_USE) && (button & IN_USE))
			drag_start(id)
		
		if ((oldbutton & IN_USE) && !(button & IN_USE))
			drag_end(id)
	}
	
	if (!g_drag_i[id]) {
		g_unable2move[id] = false
	}
		
	if (g_unable2move[id] && get_pcvar_num(cvar_unb2move) > 0)
	{
		set_pev(id, pev_maxspeed, 1.0)
	}
	
	return PLUGIN_CONTINUE
}

public client_disconnect(id) // if client disconnects drag off
{
	if (id <= 0 || id > 32)
		return
	
	if (g_hooked[id])
		drag_end(id)
	
	if(g_unable2move[id])
		g_unable2move[id] = false
}

public harpoon_target(parm[]) // set beam (ex. tongue:) if target is player
{
	new id = parm[0]
	new hooktarget = parm[1]

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(8)	// TE_BEAMENTS
	write_short(id)
	write_short(hooktarget)
	write_short(g_Line)	// sprite index
	write_byte(0)	// start frame
	write_byte(0)	// framerate
	write_byte(200)	// life
	write_byte(8)	// width
	write_byte(1)	// noise
	write_byte(155)	// r, g, b
	write_byte(155)	// r, g, b
	write_byte(55)	// r, g, b
	write_byte(90)	// brightness
	write_byte(10)	// speed
	message_end()
}

public bind_v_key(id, keys)
{
	g_bind_or_not[id] = true
	switch(keys)
	{
		case 0:
			client_cmd(id, "bind v ^"+drag^"")
	
		case 1:
			client_print(id, print_chat, "[ZP] To drag player to youself (bind ^'^'key^'^' ^'^'+drag^'^') hold binded key")
			
		case 2:
			g_bind_use[id] = true
			
		default:
			g_bind_or_not[id] = false
	}
	
	return PLUGIN_HANDLED
}

public noTarget(id) // set beam if target isn't player
{
	new endorigin[3]

	get_user_origin(id, endorigin, 3)

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte( TE_BEAMENTPOINT ); // TE_BEAMENTPOINT
	write_short(id)
	write_coord(endorigin[0])
	write_coord(endorigin[1])
	write_coord(endorigin[2])
	write_short(g_Line) // sprite index
	write_byte(0)	// start frame
	write_byte(0)	// framerate
	write_byte(200)	// life
	write_byte(8)	// width
	write_byte(1)	// noise
	write_byte(155)	// r, g, b
	write_byte(155)	// r, g, b
	write_byte(55)	// r, g, b
	write_byte(75)	// brightness
	write_byte(0)	// speed
	message_end()
}

public beam_remove(id) // remove beam
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(99)	//TE_KILLBEAM
	write_short(id)	//entity
	message_end()
}

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от mi0 » 29 Юли 2019, 22:33

Проблема изобщо не е в натива. Проблема е, че даваш грешни аргументи на натива.
Сега не би трябвало да няма проблеми.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>
#include <engine>

#define PLUGIN "[ZP] Class Smoker"
#define VERSION "1.3"
#define AUTHOR "4eRT"

//Main Class, modelT & Sprite Beam
new g_zclass_smoker, g_Line
new const generic_models[][] = { "models/player/zombie_smoker/zombie_smokerT.mdl" }
//Sounds
new g_sndMiss[] = "zombie_plague/Smoker_TongueHit_miss.wav"
new g_sndDrag[] = "zombie_plague/Smoker_TongueHit_drag.wav"
//Some vars
new g_hooked[33], g_hooksLeft[33], g_unable2move[33], g_ovr_dmg[33]
new Float:g_lastHook[33]
new bool: g_bind_use[33] = false, bool: g_bind_or_not[33] = false, bool: g_drag_i[33] = false
//Cvars
new cvar_maxdrags, cvar_dragspeed, cvar_cooldown, cvar_dmg2stop, cvar_mates, cvar_extrahook, cvar_unb2move, cvar_nemesis, cvar_survivor
//Menu keys
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3
//Smoker Atributes
new const zclass_name[] = { "Smoker" }
new const zclass_info[] = { "Can drag players" }
new const zclass_model[] = { "zombie_source" }
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" }
const zclass_health = 1400
const zclass_speed = 190
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0

public plugin_init()
{
	cvar_dragspeed = register_cvar("zp_smoker_dragspeed", "170")
	cvar_maxdrags = register_cvar("zp_smoker_maxdrags", "7")
	cvar_cooldown = register_cvar("zp_smoker_cooldown", "5")
	cvar_dmg2stop = register_cvar("zp_smoker_dmg2stop", "300")
	cvar_mates = register_cvar("zp_smoker_mates", "0")
	cvar_extrahook = register_cvar("zp_smoker_extrahook", "2")
	cvar_unb2move = register_cvar("zp_smoker_unable_move", "1")
	cvar_nemesis = register_cvar("zp_smoker_nemesis", "0")
	cvar_survivor = register_cvar("zp_smoker_survivor", "1")
	register_event("ResetHUD", "newSpawn", "b")
	register_event("DeathMsg", "smoker_death", "a")
	register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_clcmd("+drag","drag_start", ADMIN_USER, "bind ^"key^" ^"+drag^"")
	register_clcmd("-drag","drag_end")
	register_menucmd(register_menuid("Do you want to bind V +drag?"), keys, "bind_v_key")
}
public plugin_precache()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	g_zclass_smoker = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
	precache_sound(g_sndDrag)
	precache_sound(g_sndMiss)
	g_Line = precache_model("sprites/zbeam4.spr")

	for (new i = 0; i < sizeof generic_models; i++)
	precache_model(generic_models[i])
}

public zp_user_infected_post(id, infector)
{
        if  (is_user_connected(infector))
        {
                return
        }

	if ((zp_get_user_zombie_class(infector) == g_zclass_smoker) && (get_pcvar_num(cvar_extrahook) > 0))
	{
		g_hooksLeft[infector] = g_hooksLeft[infector] + get_pcvar_num(cvar_extrahook)
		set_hudmessage(255, 0, 0, -1.0, 0.45, 0, 0.0, 3.0, 0.01, 0.01, -1)
		show_hudmessage(infector, "+%d drag%s!", get_pcvar_num(cvar_extrahook), (get_pcvar_num(cvar_extrahook) < 2) ? "" : "s")
	}

	if (zp_get_user_zombie_class(id) == g_zclass_smoker)
	{
		g_hooksLeft[id] = get_pcvar_num(cvar_maxdrags)

		if (!g_bind_or_not[id])
		{
			new menu[192]
			format(menu, 191, "Do you want to bind V +drag?^n^n1. Yes^n2. No^n3. Drag on +USE")
			show_menu(id, keys, menu)
		}
	}
}

public newSpawn(id)
{
	if (g_hooked[id])
		drag_end(id)
}

public drag_start(id) // starts drag, checks if player is Smoker, checks cvars
{
	if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker) && !g_drag_i[id]) {

		static Float:cdown
		cdown = get_pcvar_float(cvar_cooldown)

		if (!is_user_alive(id)) {
			client_print(id, print_chat, "[ZP] You can't drag if you are dead!")
			return PLUGIN_HANDLED
		}

		if (g_hooksLeft[id] <= 0) {
			client_print(id, print_chat, "[ZP] You can't drag anymore!")
			return PLUGIN_HANDLED
		}

		if (get_gametime() - g_lastHook[id] < cdown) {
			client_print(id, print_chat, "[ZP] Wait %.f0 sec. to drag again!", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id]))
			return PLUGIN_HANDLED
		}

		new hooktarget, body
		get_user_aiming(id, hooktarget, body)

		if (zp_get_user_nemesis(id) && get_pcvar_num(cvar_nemesis) == 0) {
			client_print(id, print_chat, "[ZP] You can't drag if you are Nemesis!")
			return PLUGIN_HANDLED
		}

		if (is_user_alive(hooktarget)) {
			if (!zp_get_user_zombie(hooktarget))
				{
					if (zp_get_user_survivor(hooktarget) && get_pcvar_num(cvar_survivor) == 0) {
						client_print(id, print_chat, "[ZP] You can't drag Survivor!")
						return PLUGIN_HANDLED
					}

					g_hooked[id] = hooktarget
					emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
				}
			else
				{
					if (get_pcvar_num(cvar_mates) == 1)
					{
						g_hooked[id] = hooktarget
						emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
					}
					else
					{
						client_print(id, print_chat, "[ZP] You can't drag teammates!")
						return PLUGIN_HANDLED
					}
				}

			if (get_pcvar_float(cvar_dragspeed) <= 0.0)
				cvar_dragspeed = 1

			new parm[2]
			parm[0] = id
			parm[1] = hooktarget

			set_task(0.1, "smoker_reelin", id, parm, 2, "b")
			harpoon_target(parm)

			g_hooksLeft[id]--
			client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
			g_drag_i[id] = true

			if(get_pcvar_num(cvar_unb2move) == 1)
				g_unable2move[hooktarget] = true

			if(get_pcvar_num(cvar_unb2move) == 2)
				g_unable2move[id] = true

			if(get_pcvar_num(cvar_unb2move) == 3)
			{
				g_unable2move[hooktarget] = true
				g_unable2move[id] = true
			}
		} else {
			g_hooked[id] = 33
			noTarget(id)
			emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
			g_drag_i[id] = true
			g_hooksLeft[id]--
			client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
		}
	}
	else
		return PLUGIN_HANDLED

	return PLUGIN_CONTINUE
}

public smoker_reelin(parm[]) // dragging player to smoker
{
	new id = parm[0]
	new victim = parm[1]

	if (!g_hooked[id] || !is_user_alive(victim))
	{
		drag_end(id)
		return
	}

	new Float:fl_Velocity[3]
	new idOrigin[3], vicOrigin[3]

	get_user_origin(victim, vicOrigin)
	get_user_origin(id, idOrigin)

	new distance = get_distance(idOrigin, vicOrigin)

	if (distance > 1) {
		new Float:fl_Time = distance / get_pcvar_float(cvar_dragspeed)

		fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
		fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
		fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
	} else {
		fl_Velocity[0] = 0.0
		fl_Velocity[1] = 0.0
		fl_Velocity[2] = 0.0
	}

	entity_set_vector(victim, EV_VEC_velocity, fl_Velocity) //<- rewritten. now uses engine
}

public drag_end(id) // drags end function
{
	g_hooked[id] = 0
	beam_remove(id)
	remove_task(id)

	if (g_drag_i[id])
		g_lastHook[id] = get_gametime()

	g_drag_i[id] = false
	g_unable2move[id] = false
}

public smoker_death() // if smoker dies drag off
{
	new id = read_data(2)

	beam_remove(id)

	if (g_hooked[id])
		drag_end(id)
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage) // if take damage drag off
{
	if (is_user_alive(attacker) && (get_pcvar_num(cvar_dmg2stop) > 0))
	{
		g_ovr_dmg[victim] = g_ovr_dmg[victim] + floatround(damage)
		if (g_ovr_dmg[victim] >= get_pcvar_num(cvar_dmg2stop))
		{
			g_ovr_dmg[victim] = 0
			drag_end(victim)
			return HAM_IGNORED;
		}
	}

	return HAM_IGNORED;
}

public fw_PlayerPreThink(id)
{
	if (!is_user_alive(id))
		return FMRES_IGNORED

	new button = get_user_button(id)
	new oldbutton = get_user_oldbutton(id)

	if (g_bind_use[id] && zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker))
	{
		if (!(oldbutton & IN_USE) && (button & IN_USE))
			drag_start(id)

		if ((oldbutton & IN_USE) && !(button & IN_USE))
			drag_end(id)
	}

	if (!g_drag_i[id]) {
		g_unable2move[id] = false
	}

	if (g_unable2move[id] && get_pcvar_num(cvar_unb2move) > 0)
	{
		set_pev(id, pev_maxspeed, 1.0)
	}

	return PLUGIN_CONTINUE
}

public client_disconnect(id) // if client disconnects drag off
{
	if (id <= 0 || id > 32)
		return

	if (g_hooked[id])
		drag_end(id)

	if(g_unable2move[id])
		g_unable2move[id] = false
}

public harpoon_target(parm[]) // set beam (ex. tongue:) if target is player
{
	new id = parm[0]
	new hooktarget = parm[1]

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(8)	// TE_BEAMENTS
	write_short(id)
	write_short(hooktarget)
	write_short(g_Line)	// sprite index
	write_byte(0)	// start frame
	write_byte(0)	// framerate
	write_byte(200)	// life
	write_byte(8)	// width
	write_byte(1)	// noise
	write_byte(155)	// r, g, b
	write_byte(155)	// r, g, b
	write_byte(55)	// r, g, b
	write_byte(90)	// brightness
	write_byte(10)	// speed
	message_end()
}

public bind_v_key(id, keys)
{
	g_bind_or_not[id] = true
	switch(keys)
	{
		case 0:
			client_cmd(id, "bind v ^"+drag^"")

		case 1:
			client_print(id, print_chat, "[ZP] To drag player to youself (bind ^'^'key^'^' ^'^'+drag^'^') hold binded key")

		case 2:
			g_bind_use[id] = true

		default:
			g_bind_or_not[id] = false
	}

	return PLUGIN_HANDLED
}

public noTarget(id) // set beam if target isn't player
{
	new endorigin[3]

	get_user_origin(id, endorigin, 3)

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte( TE_BEAMENTPOINT ); // TE_BEAMENTPOINT
	write_short(id)
	write_coord(endorigin[0])
	write_coord(endorigin[1])
	write_coord(endorigin[2])
	write_short(g_Line) // sprite index
	write_byte(0)	// start frame
	write_byte(0)	// framerate
	write_byte(200)	// life
	write_byte(8)	// width
	write_byte(1)	// noise
	write_byte(155)	// r, g, b
	write_byte(155)	// r, g, b
	write_byte(55)	// r, g, b
	write_byte(75)	// brightness
	write_byte(0)	// speed
	message_end()
}

public beam_remove(id) // remove beam
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(99)	//TE_KILLBEAM
	write_short(id)	//entity
	message_end()
}
Последно промяна от mi0 на 30 Юли 2019, 00:09, променено общо 1 път.
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
lurku
Извън линия
Потребител
Потребител
Мнения: 45
Регистриран на: 15 Юни 2019, 22:07
Се отблагодари: 6 пъти
Получена благодарност: 1 път
Обратна връзка:

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от lurku » 30 Юли 2019, 00:21

Ще го изпробвам и ще кажа :tnx: :tnx:

Добавено преди 12 минути 59 секунди:
Здравей ерор ми дава при компилирането error 001: expected token: "}" , but found "{" при мене ли е проблема или ?

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от OciXCrom » 30 Юли 2019, 01:10

Изпуснал е една скоба. Поправих кода в мнението на mi0.

ПС - целта на раздела "Скриптиране" е да се научиш сам да правиш нещата, а не да чакаш друг да ти поправи грешките. Както виждам не правиш това, така че по-добре пускай си темите в раздела за заявки.

Аватар
lurku
Извън линия
Потребител
Потребител
Мнения: 45
Регистриран на: 15 Юни 2019, 22:07
Се отблагодари: 6 пъти
Получена благодарност: 1 път
Обратна връзка:

Проблем с [Class] Zombie Smoker ? Грешка в конзолата [Помощ]

Мнение от lurku » 30 Юли 2019, 21:18

Опитах се но нещо не съм за тези неща :) Добре там ще пускам темите.

Но все още дава грешки зомбито.

Код за потвърждение: Избери целия код

L 07/30/2019 - 21:06:15: [ZP] Invalid Player (0)
L 07/30/2019 - 21:06:15: [AMXX] Displaying debug trace (plugin "zp_zclass_smoker
.amxx")
L 07/30/2019 - 21:06:15: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie_class")
L 07/30/2019 - 21:06:15: [AMXX] [0] zp_zclass_smoker.sma::zp_user_infected_po
st (line 73)
L 07/30/2019 - 21:06:15: [ZP] Invalid Player (0)
L 07/30/2019 - 21:06:15: [AMXX] Displaying debug trace (plugin "zp_zclass_smoker
.amxx")
L 07/30/2019 - 21:06:15: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie_class")
L 07/30/2019 - 21:06:15: [AMXX] [0] zp_zclass_smoker.sma::zp_user_infected_po
st (line 73)

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Скриптиране”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта