2 funkcje.
ELOS
15.10.2011
Kolejny problem napotkany na mojej drodze : P
Poszukuje 2 funkcji.
Piorun - wali tylko w 1 przeciwnika na którego nacelowaliśmy i który jest xxx od nas (nie wali przez ściany)
Hight Jump - nie chodzi mi o gravitacje tylko np w pokemon chyba któryś z pokemonów miał wyższy skok to coś w tym stylu.
Aha no i jeszcze 1 pytanie.
W
Poszukuje 2 funkcji.
Piorun - wali tylko w 1 przeciwnika na którego nacelowaliśmy i który jest xxx od nas (nie wali przez ściany)
Hight Jump - nie chodzi mi o gravitacje tylko np w pokemon chyba któryś z pokemonów miał wyższy skok to coś w tym stylu.
Aha no i jeszcze 1 pytanie.
W
zdrowie_gracza[id] = 100.0+zyciep[id]*10;oraz
grawitacja_gracza[id] = 1.0-grawitacjap[id]*0.2;wywala mi błąd tag mismatch pomimo że działa.
MarWit
15.10.2011
Co do HightJump'a spróbuj tak:
Co do tych zmiennych, podaj ich typ.
Użytkownik MarWit edytował ten post 15.10.2011 09:44
#include <amxmodx>
#include <fakemeta>
new g_bJump[33] = false;
public plugin_init() {
register_forward(FM_PlayerPreThink, "fwd_PreThink")
}
public fwd_PreThink(id)
{
new iButtons = pev(id, pev_button)
new iOldButtons = pev(id, pev_oldbuttons)
new iFlags = pev(id, pev_flags)
if((iButtons & IN_JUMP) && !(iOldButtons & IN_JUMP) && (iFlags & FL_ONGROUND))
g_bJump[id] = true
if(!(iFlags & FL_ONGROUND) && g_bJump[id])
{
new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)
fVelocity[2] *= 2.0
set_pev(id, pev_velocity, fVelocity)
g_bJump[id] = false
}
return FMRES_IGNORED
}
Co do tych zmiennych, podaj ich typ.
Użytkownik MarWit edytował ten post 15.10.2011 09:44
speedkill
15.10.2011
W zdrowie_gracza[id] = 100.0+zyciep[id]*10; oraz grawitacja_gracza[id] = 1.0-grawitacjap[id]*0.2; wywala mi błąd tag mismatch pomimo że działa.Dodaj + przed znakiem = powinno nie być błędu
ELOS
15.10.2011
A jak z tego kodu zrobić że po użyciu tak skacze (automatycznie np jak wpiszemy /jump)Co do HightJump'a spróbuj tak:
#include <amxmodx>
#include <fakemeta>
new g_bJump[33] = false;
public plugin_init() {
register_forward(FM_PlayerPreThink, "fwd_PreThink")
}
public fwd_PreThink(id)
{
new iButtons = pev(id, pev_button)
new iOldButtons = pev(id, pev_oldbuttons)
new iFlags = pev(id, pev_flags)
if((iButtons & IN_JUMP) && !(iOldButtons & IN_JUMP) && (iFlags & FL_ONGROUND))
g_bJump[id] = true
if(!(iFlags & FL_ONGROUND) && g_bJump[id])
{
new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)
fVelocity[2] *= 2.0
set_pev(id, pev_velocity, fVelocity)
g_bJump[id] = false
}
return FMRES_IGNORED
}
MarWit
15.10.2011
@SpeedKill, akurat on chce nadać wartość, a nie dodać. Tag Mismatch jest wywalany jak do jednego typu zmiennej ( np. int ) chcemy nadać wartość o innym typie ( np. float ).
@Up
Użytkownik MarWit edytował ten post 15.10.2011 09:50
@Up
#include <amxmodx>
#include <fakemeta>
new g_bJump[33] = false;
new g_bHasHightJump[33] = false;
public plugin_init() {
register_forward(FM_PlayerPreThink, "fwd_PreThink")
register_clcmd("say /jump", "cmdJump")
}
public cmdJump(id)
g_bHasHightJump[id] = !g_bHasHightJump[id]
public fwd_PreThink(id)
{
if(!g_bHasHightJump[id])
return FMRES_IGNORED
new iButtons = pev(id, pev_button)
new iOldButtons = pev(id, pev_oldbuttons)
new iFlags = pev(id, pev_flags)
if((iButtons & IN_JUMP) && !(iOldButtons & IN_JUMP) && (iFlags & FL_ONGROUND))
g_bJump[id] = true
if(!(iFlags & FL_ONGROUND) && g_bJump[id])
{
new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)
fVelocity[2] *= 2.0
set_pev(id, pev_velocity, fVelocity)
g_bJump[id] = false
}
return FMRES_IGNORED
}
Użytkownik MarWit edytował ten post 15.10.2011 09:50
ELOS
15.10.2011
a z tym co zrobić ?W zdrowie_gracza[id] = 100.0+zyciep[id]*10; oraz grawitacja_gracza[id] = 1.0-grawitacjap[id]*0.2; wywala mi błąd tag mismatch pomimo że działa.Dodaj + przed znakiem = powinno nie być błędu
@SpeedKill, akurat on chce nadać wartość, a nie dodać. Tag Mismatch jest wywalany jak do jednego typu zmiennej ( np. int ) chcemy nadać wartość o innym typie ( np. float ).
@Up
#include <amxmodx>
#include <fakemeta>
new g_bJump[33] = false;
new g_bHasHightJump[33] = false;
public plugin_init() {
register_forward(FM_PlayerPreThink, "fwd_PreThink")
register_clcmd("say /jump", "cmdJump")
}
public cmdJump(id)
g_bHasHightJump[id] = !g_bHasHightJump[id]
public fwd_PreThink(id)
{
if(!g_bHasHightJump[id])
return FMRES_IGNORED
new iButtons = pev(id, pev_button)
new iOldButtons = pev(id, pev_oldbuttons)
new iFlags = pev(id, pev_flags)
if((iButtons & IN_JUMP) && !(iOldButtons & IN_JUMP) && (iFlags & FL_ONGROUND))
g_bJump[id] = true
if(!(iFlags & FL_ONGROUND) && g_bJump[id])
{
new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)
fVelocity[2] *= 2.0
set_pev(id, pev_velocity, fVelocity)
g_bJump[id] = false
}
return FMRES_IGNORED
}
A czy da się zrobić że po 1 skoku, skoki robią się normalne ?
Użytkownik ELOS edytował ten post 15.10.2011 10:12
Nakupenda.
15.10.2011
@ELOS, tym razem speedkill nie ma racji
łap poprawny kod
oraz
łap poprawny kod
zdrowie_gracza[id] = floatround(100.0+zyciep[id]*10);
oraz
grawitacja_gracza[id] = floatround(1.0-grawitacjap[id]*0.2);
ELOS
15.10.2011
Dzięki Nakupenda, A czy ktoś wie jak zrobić ten piorun ?
Edit:
zdrowie_gracza[id] = floatround(100.0+zyciep[id]*10);
oraz
grawitacja_gracza[id] = floatround(1.0-grawitacjap[id]*0.2);
są zbugowane mam 0 hp i latam
Użytkownik ELOS edytował ten post 15.10.2011 10:51
Edit:
zdrowie_gracza[id] = floatround(100.0+zyciep[id]*10);
oraz
grawitacja_gracza[id] = floatround(1.0-grawitacjap[id]*0.2);
są zbugowane mam 0 hp i latam
Użytkownik ELOS edytował ten post 15.10.2011 10:51
Nakupenda.
15.10.2011
#include <amxmodx>
#include <engine>
#include <fakemeta>
#define IsPlayer(%1) (1 <= %1 <= g_MaxPlayers)
new g_MaxPlayers;
new light;
new g_thunderbolt[ 33 ];
public plugin_precache( ) {
light = precache_model("sprites/piorun.spr");
}
public plugin_init( ) {
register_forward( FM_PlayerPreThink, "fw_PlayerPreThink");
g_MaxPlayers = get_maxplayers( );
}
public fw_PlayerPreThink( client ) {
if( !is_user_alive( client ) )
return PLUGIN_CONTINUE;
}
if ( ( get_user_button( client ) & IN_USE ) && g_item[33] == 1 )
{
MakeThunderBolt( client );
}
}
public MakeThunderBolt( client ) {
if( ( !is_user_alive( client ) ) || ( g_thunderbolt[ client ] == 2 ) )
return;
new iMakerOrigin[ 3 ], Float:iMakeOriginSe[3];
get_user_origin( client, iMakerOrigin );
for( new i = 0; i < 3; i++ ){
iMakeOriginSe[i] = float( iMakerOrigin[i] );
}
new entPlayer;
entPlayer = -1;
new iVictimOrigin[ 3 ];
while( ( entPlayer = find_ent_in_sphere( client, iMakeOriginSe, 550.0 ) ) != 0 )
{
if( IsPlayer( entPlayer ) && entPlayer != client )
{
get_user_origin( entPlayer, iVictimOrigin );
CreateBolt( entPlayer, iVictimOrigin );
change_health( entPlayer, -80, 0, "world" );
g_thunderbolt[ client ]++;
}
}
}
CreateBolt( iPlayer, iVictim[3] ) {
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( 0 )
write_coord( iVictim[ 0 ] ) //x
write_coord( iVictim[ 1 ] ) //y
write_coord( iVictim[ 2 ] ) //z
write_coord( iVictim[ 0 ] )
write_coord( iVictim[ 1 ] )
write_coord( iVictim[ 2 ] )
write_short( light )
write_byte( 1 )
write_byte( 5 )
write_byte( 2 )
write_byte( 20 )
write_byte( 30 )
write_byte( 255 )
write_byte( 255 )
write_byte( 255 )
write_byte( 200 )
write_byte( 200 )
message_end( )
}
wzuć funkcje do diablo i item/moc do klasy masz "g_item[id] = 1", "g_thunderbolt[ client ]" to jest ile razy może użyć (domyślnie 2) i dodaj w evencie newround "g_thunderbolt[client]=0" żeby resetowało
Nie mam sprite pioruna, z kodu się domyślisz jak się ma nazywać i gdzie być
zdrowie_gracza[id] = floatround(100.0+zyciep[id]*10); oraz grawitacja_gracza[id] = floatround(1.0-grawitacjap[id]*0.2); są zbugowane mam 0 hp i latampodaj cały kod, założyłem że jest niezaokraglone a tu chodzi o coś innego
Użytkownik Nakupenda. edytował ten post 15.10.2011 11:11
ELOS
15.10.2011
Nie działa.może zdrowie_gracza[id] = floatround(100 + (zyciep[id] * 10)) ?
Nakupenda dzięki za kod.
Edit: Ze zdrowia mi już nie wyskakuje taki kod dałem
zdrowie_gracza[id] = 100+zyciep[id]*10;
Edit2:
Jednak nie działa : P
To jest mój kod.
public Odrodzenie(id) { zdrowie_gracza[id] += zyciep[id]*10; pancerz_gracza[id] = pancerzp[id]*20; grawitacja_gracza[id] = 800-grawitacjap[id]*200; //szybkosc_gracza[id] = set_pev(id, pev_health, zdrowie_gracza[id]); set_pev(id, pev_gravity, grawitacja_gracza[id]); set_user_armor(id, pancerz_gracza[id]) if(butyp[id] == 4) { set_user_footsteps(id, 1); } else if(butyp[id] < 4) { set_user_footsteps(id, 0); } DajBron(id) }
Użytkownik ELOS edytował ten post 15.10.2011 11:52
Nakupenda.
15.10.2011
funfel, nie osmieszaj sie
Elos, ale ten kod jest zupełnie inny niż to co podałeś w pierwszym poście
Elos, ale ten kod jest zupełnie inny niż to co podałeś w pierwszym poście
ELOS
15.10.2011
Bo teraz jest edytowany. teraz podałem cały kod w którym występują błędy.
Du masz jeszcze nowszy kod.
Użytkownik ELOS edytował ten post 15.10.2011 12:06
Du masz jeszcze nowszy kod.
public Odrodzenie(id) { zdrowie_gracza[id] = STANDARDOWE_ZYCIE+zyciep[id]*10.0; pancerz_gracza[id] = pancerzp[id]*20; grawitacja_gracza[id] = STANDARDOWA_GRAWITACJA-grawitacjap[id]*0.2; szybkosc_gracza[id] = STANDARDOWA_SZYBKOSC+butyp[id]*30; set_pev(id, pev_health, zdrowie_gracza[id]); set_pev(id, pev_gravity, grawitacja_gracza[id]); set_user_armor(id, pancerz_gracza[id]) if(butyp[id] == 4) { set_user_footsteps(id, 1); } else if(butyp[id] < 4) { set_user_footsteps(id, 0); } DajBron(id) }
Użytkownik ELOS edytował ten post 15.10.2011 12:06
Nakupenda.
15.10.2011
zdrowie_gracza[id] = STANDARDOWE_ZYCIE+zyciep[id]*10;
gdzie STANDARDOWE_ZYCIE nie jest typu Float
oraz
new gravityy[33] //dodaj na gorze sma
gravityy[id] = floatround(grawitacjap[id]*0.2);
grawitacja_gracza[id]= STANDARDOWA_GRAWITACJA-gravityy[id];
gdzie STANDARDOWA_GRAWITACJA nie jest typu Float
Użytkownik Nakupenda. edytował ten post 15.10.2011 12:11
ELOS
15.10.2011
Nadal te same błedy : P może zamiast funkcji set pev użyjemy jakieś innej gdzie będzie można podać liczbę całkowitą 800 bo gdy są całkowite to nie wywala błędu.
Nakupenda.
15.10.2011
o bosh, już wiem gdzie jest błąd
sprawdź czy grawitacja_gracza[id] i zdrowie_gracza[id] są Float
Muszą być Float, a nie int
sprawdź czy grawitacja_gracza[id] i zdrowie_gracza[id] są Float
Muszą być Float, a nie int
mierzwi 15.10.2011
daj coś takiego
@Nakupenda - można próbować różnymi sposobami, czasem zadziała, czasem nie, ale Ty wiesz wszystko najlepiej...
set_pev(id, pev_health, float(zdrowie_gracza[id]));
@Nakupenda - można próbować różnymi sposobami, czasem zadziała, czasem nie, ale Ty wiesz wszystko najlepiej...
ELOS
15.10.2011
Co do pioruna może ktoś dać zwykły kod który nie będzie musiał być mieszany z diablo.
Nakupenda.
15.10.2011
to jest zwykły kod który zupełnie nie wymaga diablo, wystarczy że na górze sma dasz new g_item[33] = 1
@ELOS sprawdź czy masz
a jak nie to zamień na to
Użytkownik Nakupenda. edytował ten post 15.10.2011 20:55
co innego próbować różnymi sposobami a co innego pisać takie bzdury@Nakupenda - można próbować różnymi sposobami, czasem zadziała, czasem nie, ale Ty wiesz wszystko najlepiej...
@ELOS sprawdź czy masz
new Float:grawitacja_gracza[33];
new Float:zdrowie_gracza[33];
a jak nie to zamień na to
Użytkownik Nakupenda. edytował ten post 15.10.2011 20:55