←  Prośby o modyfikacje silników/klas/perków

AMXX.pl: Support AMX Mod X i SourceMod

»

Klasa
1/x przez V sekund

  • +
  • -
Ziome3eg's Photo Ziome3eg 23.11.2017

znalazłem 2 błędy: 1. mniej ważny po uzyciu trzeba zmienić broń na inną i zpowrotem aby model się wczytał, a 2 ważnejszy można tego używać cały czas (co minie 5 sek można to znów włączyć)

 

I jeszcze pytanko Zmieniając

 

if((button & IN_ATTACK2) && get_user_weapon(attacker) == CSW_KNIFE && inflictor == attacker) 

 

Na

 

if((button & IN_ATTACK) && get_user_weapon(attacker) == CSW_KNIFE && inflictor == attacker) 

 

Bd działało na LPM ?

chcesz aby było 1/1 z lewego/prawego czy z obu ?

Quote

  • +
  • -
rzeznik9871's Photo rzeznik9871 23.11.2017

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

#define model "models/v_cod_class_knife.mdl"

forward cod_class_enabled(id, klasa)
forward cod_class_disabled(id, klasa)
forward cod_class_skill_used(id)

native cod_register_class(const nazwa[], const opis[], bronie, punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci)

new bool:g_player_has_class[33],Float:g_player_item_time[33],bool:g_player_item_used[33],g_maxplayers

public plugin_precache()
	precache_model(model)
	
public plugin_init() {
	register_plugin("cod class nazwa klasy", "1.0", "fresh")
	
	cod_register_class("Nazwa","Opis",0,0,0,0,0)
	
	RegisterHam(Ham_TakeDamage,"player","bacon_player_takedamage_pre",false)
	RegisterHam(Ham_Killed,"player","bacon_player_killed_post",true)
	
	register_event("CurWeapon","event_curweapon","be","1=1","2=29")
	register_logevent("logevent_roundend", 2, "1=Round_End")
	
	g_maxplayers = get_maxplayers()
}

public cod_class_enabled(id)
	g_player_has_class[id] = true

public cod_class_disabled(id)
	g_player_has_class[id] = false
	
public cod_class_skill_used(id)
{	
	if(g_player_item_used[id])
	{
		engclient_print(id,engprint_center,"Umiejetnosc klasy mozesz uzyc tylko raz na runde")
		return;
	}
	
	set_task(5.0,"task_remove_knife_model",id)
	g_player_item_time[id] = get_gametime() + 5.0
	g_player_item_used[id] = true
	
	if(get_user_weapon(id) == CSW_KNIFE)
		set_pev(id,pev_viewmodel2,"models/v_knife.mdl")	
}

public bacon_player_takedamage_pre(id,inflictor,attacker,Float:damage,damagetype)
{
	if(!is_user_alive(attacker) || !g_player_has_class[attacker] || get_gametime() > g_player_item_time[attacker])
		return HAM_IGNORED
	
	static button
	button = pev(attacker,pev_button)
	if((button & IN_ATTACK2) && get_user_weapon(attacker) == CSW_KNIFE && inflictor == attacker) 
	{
		static Float:health
		pev(id,pev_health,health)
		SetHamParamFloat(4,health*10.0)	
		return HAM_HANDLED
	}
	
	return HAM_IGNORED
}

public bacon_player_killed_post(id,attacker,shouldgib)
	if(task_exists(id))
		remove_task(id)

public event_curweapon(id)
{
	if(!is_user_alive(id) || !g_player_has_class[id] || get_gametime() > g_player_item_time[id])
		return;
	
	set_pev(id,pev_viewmodel2,model)
}

public logevent_roundend()
{
	static id;
	for(id = 1;id <= g_maxplayers;id++)
		g_player_item_used[id] = false
}
	
public task_remove_knife_model(id)
{
	if(!g_player_has_class[id])
		return;
		
	static weapon;
	weapon = get_user_weapon(id)
	if(weapon != CSW_KNIFE)
		return;
		
	static viewmodel[64]
	pev(id,pev_viewmodel2,viewmodel,63)
	if(equal(viewmodel,model))
	{
		weapon = get_pdata_cbase(id, 370)
		if(pev_valid(weapon))
			ExecuteHam(Ham_Item_Deploy,weapon)
	}
}

tylko z ppm -> (button & IN_ATTACK2)

tylko z lpm -> (button & IN_ATTACK)

a jak z obu to poprostu wyjeb to z warunku

 

Edit: jeszcze bylo zle poprawione


Edited by rzeznik9871, 23.11.2017 18:54.
Quote

  • +
  • -
ChrisN's Photo ChrisN 23.11.2017

znalazłem 2 błędy: 1. mniej ważny po uzyciu trzeba zmienić broń na inną i zpowrotem aby model się wczytał, a 2 ważnejszy można tego używać cały czas (co minie 5 sek można to znów włączyć)

 

I jeszcze pytanko Zmieniając

 

if((button & IN_ATTACK2) && get_user_weapon(attacker) == CSW_KNIFE && inflictor == attacker) 

 

Na

 

if((button & IN_ATTACK) && get_user_weapon(attacker) == CSW_KNIFE && inflictor == attacker) 

 

Bd działało na LPM ?

 

Co do tego IN_ATTACK2 a IN_ATTACK to tak, pierwszy to LPM drugi to PPM

Tutaj masz poprawiony z blokadą

 

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <colorchat>
 
#define model "models/v_cod_class_knife.mdl"
 
forward cod_class_enabled(id, klasa)
forward cod_class_disabled(id, klasa)
forward cod_class_skill_used(id)
 
native cod_register_class(const nazwa[], const opis[], bronie, punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci)
 
new bool:g_player_has_class[33],Float:g_player_item_time[33]
new bool:wykorzystal[33];
 
public plugin_precache()
precache_model(model)
 
public plugin_init() {
register_plugin("cod class nazwa klasy", "1.0", "fresh")
 
cod_register_class("Nazwa","Opis",0,0,0,0,0)
 
RegisterHam(Ham_TakeDamage,"player","bacon_player_takedamage_pre",false)
RegisterHam(Ham_Killed,"player","bacon_player_killed_post",true)
register_event("ResetHUD", "ResetHUD", "abe");
 
register_event("CurWeapon","event_curweapon","be","1=1","2=29")
}
 
public cod_class_enabled(id)
{
g_player_has_class[id] = true;
ResetHUD(id);
}
 
public cod_class_disabled(id)
g_player_has_class[id] = false
 
public cod_class_skill_used(id)
{ 
if(!is_user_alive(id))
return;
 
if(wykorzystal[id])
{
ColorChat(id, RED, "Wykorzystales juz swoja umiejetnosc.");
return;
}
 
wykorzystal[id] = true;
 
set_task(5.0, "task_remove_knife_model", id)
g_player_item_time[id] = get_gametime() + 5.0
static weapon;
weapon = get_pdata_cbase(id, 370)
if(pev_valid(weapon))
ExecuteHam(Ham_Item_Deploy,weapon)
}
 
public bacon_player_takedamage_pre(id,inflictor,attacker,Float:damage,damagetype)
{
if(!is_user_alive(attacker) || !g_player_has_class[attacker] || get_gametime() > g_player_item_time[attacker])
return HAM_IGNORED
 
static button
button = pev(attacker,pev_button)
if((button & IN_ATTACK2) && get_user_weapon(attacker) == CSW_KNIFE && inflictor == attacker) 
{
static Float:health
pev(id,pev_health,health)
SetHamParamFloat(4,health*10.0) 
return HAM_HANDLED
}
 
return HAM_IGNORED
}
 
public bacon_player_killed_post(id,attacker,shouldgib)
if(task_exists(id))
remove_task(id)
 
public event_curweapon(id)
{
if(!is_user_alive(id) || !g_player_has_class[id] || get_gametime() > g_player_item_time[id])
return;
 
set_pev(id,pev_viewmodel2,model)
}
 
public task_remove_knife_model(id)
{
if(!g_player_has_class[id])
return;
 
static weapon;
weapon = get_user_weapon(id)
if(weapon != CSW_KNIFE)
return;
 
static viewmodel[64]
pev(id,pev_viewmodel2,viewmodel,63)
if(equal(viewmodel,model))
{
weapon = get_pdata_cbase(id, 370)
if(pev_valid(weapon))
ExecuteHam(Ham_Item_Deploy,weapon)
}
}
 
public ResetHUD(id)
wykorzystal[id] = false;
Quote

  • +
  • -
SP3D!'s Photo SP3D! 23.11.2017

chrisN twój kod daje do klasy scouta i he nwm czm. 1 Problem jeszcze isnieje, ale olać go. rzeznik twój kod nie daje broni ale troche nie działa(można użyc umiejetnosci jeszcze raz po zabiciu wszystkich wrogów i niemożna włączyć w następnej rundzie)

Quote

  • +
  • -
rzeznik9871's Photo rzeznik9871 23.11.2017

podmien 

register_logevent("logevent_roundend", 2, "1=Round_End")

na

register_logevent("logevent_roundend", 2, "1=Round_Start")

a bron rejestrujesz tutaj w trzecim parametrze 

cod_register_class("Nazwa","Opis",0,0,0,0,0)

np.

cod_register_class("Nazwa","Opis", (1<<CSW_AK47 | 1<<CSW_USP) ,0,0,0,0)

i pisz jaki jest ten jeden blad to sie go naprawi niestety ale tak to jest jak daje sie suchy kod bez sprawdzenia no ale tak jak mowie nie mam coda

Quote

  • +
  • -
Ziome3eg's Photo Ziome3eg 24.11.2017

podmien 

register_logevent("logevent_roundend", 2, "1=Round_End")

na

register_logevent("logevent_roundend", 2, "1=Round_Start")

a bron rejestrujesz tutaj w trzecim parametrze 

cod_register_class("Nazwa","Opis",0,0,0,0,0)

np.

cod_register_class("Nazwa","Opis", (1<<CSW_AK47 | 1<<CSW_USP) ,0,0,0,0)

i pisz jaki jest ten jeden blad to sie go naprawi niestety ale tak to jest jak daje sie suchy kod bez sprawdzenia no ale tak jak mowie nie mam coda

albo tutaj ma prawie całą gotową klasę, przerobiłem typowo pod codmoda, ma #include codmod i typowe ustawienie

#include <amxmodx>

#include <codmod>
#include <hamsandwich>
#include <fakemeta>
#include <colorchat>
 
#define model "models/v_cod_class_knife.mdl"
 
new const nazwa[]   = "Nazwa";
new const opis[]    = "Posiada 1/1 z kosy oraz unikalny model na 5 sekund.";
new const bronie    = (1<<CSW_FAMAS);
new const zdrowie   = 0;
new const kondycja  = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
new bool:ma_klase[33],Float:g_player_item_time[33],bool:g_player_item_used[33],g_maxplayers
 
public plugin_precache()
precache_model(model)
 
public plugin_init() {
register_plugin("cod class nazwa klasy", "1.0", "fresh")
 
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
 
RegisterHam(Ham_TakeDamage,"player","bacon_player_takedamage_pre",false)
RegisterHam(Ham_Killed,"player","bacon_player_killed_post",true)
 
register_event("CurWeapon","event_curweapon","be","1=1","2=29")
register_logevent("logevent_roundend", 2, "1=Round_Start")
 
g_maxplayers = get_maxplayers()
}
 
public cod_class_enabled(id)
{
ma_klase[id] = true;
}
                
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public cod_class_skill_used(id)
{
if(g_player_item_used[id])
{
ColorChat(id, RED, "Umiejetnosc klasy mozesz uzyc tylko raz na runde.");
return;
}
 
set_task(5.0,"task_remove_knife_model",id)
g_player_item_time[id] = get_gametime() + 5.0
g_player_item_used[id] = true
 
if(get_user_weapon(id) == CSW_KNIFE)
set_pev(id,pev_viewmodel2,"models/v_knife.mdl")
}
 
public bacon_player_takedamage_pre(id,inflictor,attacker,Float:damage,damagetype)
{
if(!is_user_alive(attacker) || !ma_klase[attacker] || get_gametime() > g_player_item_time[attacker])
return HAM_IGNORED
 
static button
button = pev(attacker,pev_button)
if((button & IN_ATTACK2) && get_user_weapon(attacker) == CSW_KNIFE && inflictor == attacker) 
{
static Float:health
pev(id,pev_health,health)
SetHamParamFloat(4,health*10.0)
return HAM_HANDLED
}
 
return HAM_IGNORED
}
 
public bacon_player_killed_post(id,attacker,shouldgib)
if(task_exists(id))
remove_task(id)
 
public event_curweapon(id)
{
if(!is_user_alive(id) || !ma_klase[id] || get_gametime() > g_player_item_time[id])
return;
 
set_pev(id,pev_viewmodel2,model)
}
 
public logevent_roundend()
{
static id;
for(id = 1;id <= g_maxplayers;id++)
g_player_item_used[id] = false
}
 
public task_remove_knife_model(id)
{
if(!ma_klase[id])
return;
 
static weapon;
weapon = get_user_weapon(id)
if(weapon != CSW_KNIFE)
return;
 
static viewmodel[64]
pev(id,pev_viewmodel2,viewmodel,63)
if(equal(viewmodel,model))
{
weapon = get_pdata_cbase(id, 370)
if(pev_valid(weapon))
ExecuteHam(Ham_Item_Deploy,weapon)
}
}

Edited by Ziome3eg, 24.11.2017 00:10.
Quote

  • +
  • -
SP3D!'s Photo SP3D! 24.11.2017

To ten błąd

 

1. mniej ważny po uzyciu trzeba zmienić broń na inną i zpowrotem aby model się wczytał

 

 

Reszta ok.

Quote

  • +
  • -
rzeznik9871's Photo rzeznik9871 24.11.2017

To ten błąd

 

1. mniej ważny po uzyciu trzeba zmienić broń na inną i zpowrotem aby model się wczytał

 

 

Reszta ok.

tak to jest jak sie wieczorem nie mysli trzymaj teraz powinno byc wszystko git

public cod_class_skill_used(id)
{	
	if(g_player_item_used[id])
	{
		engclient_print(id,engprint_center,"Umiejetnosc klasy mozesz uzyc tylko raz na runde")
		return;
	}
	
	set_task(5.0,"task_remove_knife_model",id)
	g_player_item_time[id] = get_gametime() + 5.0
	g_player_item_used[id] = true
	
	if(get_user_weapon(id) == CSW_KNIFE)
		set_pev(id,pev_viewmodel2,model)	
}
Quote

  • +
  • -
ChrisN's Photo ChrisN 24.11.2017

podmien 

register_logevent("logevent_roundend", 2, "1=Round_End")
na
register_logevent("logevent_roundend", 2, "1=Round_Start")
a bron rejestrujesz tutaj w trzecim parametrze 
cod_register_class("Nazwa","Opis",0,0,0,0,0)
np.
cod_register_class("Nazwa","Opis", (1<<CSW_AK47 | 1<<CSW_USP) ,0,0,0,0)
i pisz jaki jest ten jeden blad to sie go naprawi niestety ale tak to jest jak daje sie suchy kod bez sprawdzenia no ale tak jak mowie nie mam coda
albo tutaj ma prawie całą gotową klasę, przerobiłem typowo pod codmoda, ma #include codmod i typowe ustawienie
#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <fakemeta>
#include <colorchat>
 
#define model "models/v_cod_class_knife.mdl"
 
new const nazwa[]   = "Nazwa";
new const opis[]    = "Posiada 1/1 z kosy oraz unikalny model na 5 sekund.";
new const bronie    = (1<<CSW_FAMAS);
new const zdrowie   = 0;
new const kondycja  = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
new bool:ma_klase[33],Float:g_player_item_time[33],bool:g_player_item_used[33],g_maxplayers
 
public plugin_precache()
precache_model(model)
 
public plugin_init() {
register_plugin("cod class nazwa klasy", "1.0", "fresh")
 
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
 
RegisterHam(Ham_TakeDamage,"player","bacon_player_takedamage_pre",false)
RegisterHam(Ham_Killed,"player","bacon_player_killed_post",true)
 
register_event("CurWeapon","event_curweapon","be","1=1","2=29")
register_logevent("logevent_roundend", 2, "1=Round_Start")
 
g_maxplayers = get_maxplayers()
}
 
public cod_class_enabled(id)
{
ma_klase[id] = true;
}
                
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public cod_class_skill_used(id)
{
if(g_player_item_used[id])
{
ColorChat(id, RED, "Umiejetnosc klasy mozesz uzyc tylko raz na runde.");
return;
}
 
set_task(5.0,"task_remove_knife_model",id)
g_player_item_time[id] = get_gametime() + 5.0
g_player_item_used[id] = true
 
if(get_user_weapon(id) == CSW_KNIFE)
set_pev(id,pev_viewmodel2,"models/v_knife.mdl")
}
 
public bacon_player_takedamage_pre(id,inflictor,attacker,Float:damage,damagetype)
{
if(!is_user_alive(attacker) || !ma_klase[attacker] || get_gametime() > g_player_item_time[attacker])
return HAM_IGNORED
 
static button
button = pev(attacker,pev_button)
if((button & IN_ATTACK2) && get_user_weapon(attacker) == CSW_KNIFE && inflictor == attacker) 
{
static Float:health
pev(id,pev_health,health)
SetHamParamFloat(4,health*10.0)
return HAM_HANDLED
}
 
return HAM_IGNORED
}
 
public bacon_player_killed_post(id,attacker,shouldgib)
if(task_exists(id))
remove_task(id)
 
public event_curweapon(id)
{
if(!is_user_alive(id) || !ma_klase[id] || get_gametime() > g_player_item_time[id])
return;
 
set_pev(id,pev_viewmodel2,model)
}
 
public logevent_roundend()
{
static id;
for(id = 1;id <= g_maxplayers;id++)
g_player_item_used[id] = false
}
 
public task_remove_knife_model(id)
{
if(!ma_klase[id])
return;
 
static weapon;
weapon = get_user_weapon(id)
if(weapon != CSW_KNIFE)
return;
 
static viewmodel[64]
pev(id,pev_viewmodel2,viewmodel,63)
if(equal(viewmodel,model))
{
weapon = get_pdata_cbase(id, 370)
if(pev_valid(weapon))
ExecuteHam(Ham_Item_Deploy,weapon)
}
}

XDdddd bez komentarza

@SP3D1 ja tam w tej klasie nic nie zmieniałem tylko dodałem blokade.
Quote

  • +
  • -
SP3D!'s Photo SP3D! 24.11.2017

SP3D Był tak głupi że zmienił

cod_register_class("Nazwa","Opis",0,0,0,0,0)

na

cod_register_class("Nazwa","Opis",CSW_KNIFE,0,0,0,0)

Nwm po co to zrobiłem ale zrobiłem

 

Przez to dawało scouta i he

 

Ok działa wszystko. + poleciały, ale mam do was jeszcze jedno zadanie mianowicie dodajcie aby tez przez 5 sek działalo to co jest nizej.

Przy okazji dobrze rozumię to niżej np. wartość 20 kiedy bd mieli otrzymac 30 dmg -20 dmg (wartość) otrzymamy 10 dmg ?

Attached Files


Edited by SP3D!, 24.11.2017 20:52.
Quote