Szybkosc gracza
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.
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...
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 ?
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 !