←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Szybkosc gracza

  • +
  • -
Kmf!p - zdjęcie Kmf!p 14.12.2015

Tak wiem znow to samo ;)

Potrzebuje zwiekszac predkosc gracza gdy zostanie spelniony warunek, wiem ze tych poradnikow jest od czorta, ale ciezko sie polapac jak zrobic zeby to dzialalo zawsze, bo albo zmienia az nie strzele czy tam zmienie broni albo od nowej rundy samo.

 

public funkcja(id)
{
      if(ma_predkosc[id])
      {
            kod dzięki ktoremu biegniemy szybciej
      }
      else
            kod dzięki ktoremu biegniemy normalnie
}

po prostu zmienna ma_predkosc chce wlanczac lub wylanczac przyspieszenie. widzialem te tematy o szybkosci, ale jak juz mowilem zagmatwane troche, niema tam chyba zadnego przykladu zeby w miare szybko i nie zawalajac pluginu zbednym kodem to zrobic. potrzebuje sposob w miare latwy i krotki zeby to dzialalo na takiej zasadzie jak podalem wyzej.

Odpowiedz

  • +
  • -
Kmf!p - zdjęcie Kmf!p 15.12.2015

#include <amxmodx>

#include <amxmisc>

#include <cstrike>

#include <fakemeta>

#include <hamsandwich> //no dobra na jeden register includuje kanapke ale nie chce mi sie grzebac w fake wybaczycie prawda ;P ?

#include <codmod>



#define PLUGIN "Sprint"

#define VERSION "1.0"

#define AUTHOR "DarkGL"



#define SZYBKOSC_GRACZA(%1) (250.0+cod_get_user_trim(%1, 1, 1, 1)*1.3)



new Float:gfPitch[33];

new Float:gfYaw[33];



new Float:gfMoveOffset[33][2];

new giMoves[33];

new bool:gFast[33];

new gZmeczenie[33];



//pcvary

new pSpeed,pZmeczenie;



public plugin_init() {

	register_plugin(PLUGIN, VERSION, AUTHOR)

	

	pSpeed = register_cvar("sprint_szybkosc","60.0")

	pZmeczenie = register_cvar("sprint_zmeczenie","5");

	

	register_forward(FM_PlayerPreThink, "fwPreThink");

	register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1) 

	

	RegisterHam(Ham_Spawn,"player","spawned",1)

	

	register_event("CurWeapon","CurWeapon","be", "1=1");

	

	register_clcmd("+fast_run","startMove")

	register_clcmd("-fast_run","stopMove")

}



public client_connect(id)

	client_cmd(id,"bind shift +fast_run");



public startMove(id){

	if(!gFast[id] && is_user_alive(id) && cs_get_user_zoom(id) == CS_SET_NO_ZOOM){

		gfPitch[id] = gfYaw[id] = 0.0;

		moveTo(id, 0.0, 20.0);

		gFast[id] = true;

		engfunc(EngFunc_SetClientMaxspeed, id, SZYBKOSC_GRACZA(id)+get_pcvar_float(pSpeed));

		remove_task(id)

		set_task(0.1,"addZmeczenie",id,_,_,"b")

	}

	return PLUGIN_HANDLED

}



public stopMove(id){

	if(gFast[id] && is_user_alive(id)){

		moveTo(id, 0.0, 0.0);

		gFast[id] = false;

		engfunc(EngFunc_SetClientMaxspeed, id, SZYBKOSC_GRACZA(id));

		remove_task(id)

		set_task(0.2,"odejZmecznie",id,_,_,"b")

	}

	return PLUGIN_HANDLED

}



moveTo(id, Float:fPitch, Float:fYaw, moves=30){

	gfMoveOffset[id][0] = (fPitch - gfPitch[id])/moves;

	gfMoveOffset[id][1] = (fYaw - gfYaw[id])/moves;

	giMoves[id] = moves;

}



public fwPreThink(id){

	if(!is_user_alive(id)) return;

	

	if(gFast[id]){

		set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK) 

		set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK2) 

		if(gZmeczenie[id] >= get_pcvar_num(pZmeczenie)*10){

			stopMove(id);

		}

	}



	if(giMoves[id] > 0){

		giMoves[id]--;

		gfPitch[id] += gfMoveOffset[id][0];

		gfYaw[id] += gfMoveOffset[id][1];

		engfunc(EngFunc_CrosshairAngle, id, gfPitch[id], gfYaw[id]);

	}

}



public spawned(id){

	if(is_user_alive(id)){

		gZmeczenie[id] = 0;

	}

}



public addZmeczenie(id){

	gZmeczenie[id]++;

}



public odejZmecznie(id){

	if(gZmeczenie[id] > 0){

		gZmeczenie[id]--;

	}

}



public UpdateClientData_Post(id, sendweapons, cd_handle) 

{ 

	if(!is_user_alive(id)){ 

		return FMRES_IGNORED

	}

	

	if(gFast[id]){

		set_cd(cd_handle, CD_ID, 0) 

		return FMRES_HANDLED 

	}     

	return FMRES_IGNORED

}  



public CurWeapon(id)

{

	if(!is_user_alive(id)){

		return PLUGIN_CONTINUE;

	}

	static iOldWeap[33];

	new weapon = read_data(2);

	

	if(gFast[id] && iOldWeap[id] != weapon){

		new szName[64];

		get_weaponname(iOldWeap[id],szName,charsmax(szName));

		engclient_cmd(id,szName);

		engfunc(EngFunc_SetClientMaxspeed, id, SZYBKOSC_GRACZA(id)+get_pcvar_float(pSpeed));

		return PLUGIN_CONTINUE;

	}

	

	iOldWeap[id] = weapon;

	return PLUGIN_CONTINUE;

}

moze mi ktos to przerobic zeby usunac zmeczenie i klawisz szift...

Odpowiedz

  • +
  • -
Kmf!p - zdjęcie Kmf!p 15.12.2015

Zmiana planow ;)

wyzej wymieniony plugin dziala do momentu gdy nie wybiore klasy, pozniej predkosc zostaje nadpisana przez kondycje klasy wiec ten sposob tez odrzuce ;) wymyslilem zeby pobierac kondycje gracza ta z cod i dodawac do niej bonus.

tylko problem w tym ze ta kondycja dziala od nowej rundy, co trzeba zmienic aby dzialala w tym momencie w ktorym dodajemy punkty ? zauwazylem ze po wejsciu na serwer mamy normalna kondycje ale gdy wybierzemy klase dostajemy bonus z kondycja od razu, a nie od nowej rundy. od czego to zalezy ?

Odpowiedz

  • +
  • -
Kmf!p - zdjęcie Kmf!p 16.12.2015

nabijanie postow level HARD ;D

usuncie ten temat, znalazlem rozwiazanie mojego problemu, a pomyslec ze chcialem wklejac kod sprintu, a rozwiazanie jest tak banalne ze zmieszcze sie w 1 linijce kodu ;)

Jestem Genialny ! xD

Odpowiedz