Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Strike - zdjęcie

Strike

Rejestracja: 02.10.2011
Aktualnie: Nieaktywny
Poza forum Ostatnio: 24.10.2011 20:22
-----

Moje tematy

Przerobienie head_splash

17.10.2011 18:52

Witam. Mam plugin head splash. Działa on tak, że gdy skoczę komuś na głowę to zabiera mu ileś hp jeśli stoję na nim to też mu zabiera, ale mniej. ( Jeszcze jak ktoś ma vesthelma to zabiera mniej )

Chciałbym mieć go tak przerobione by nieważne czy ktoś skoczył na kogoś czy stoi na nim czy ma vesta czy nie zabierało tyle samo hp ( 70 ) .

Myślę, że to nie jest takie trudne ( chodź dla mnie tak ). Polecą ++ z góry thx

#include <amxmodx>
#include <fakemeta>
#include <cstrike>
#define PLUGIN_VERSION "1.4"
// JUMPING
#define MINIMUM_FALL_SPEED 300
#define MAXIMUM_DAMAGE_FROM_JUMP 70.0
//STANDING
#define DAMAGE 6.0
#define DELAY 0.5
new amx_headsplash;
new Float:falling_speed[33];
new Float:damage_after[33][33];
new sprite_blood;
new sprite_bloodspray;
public plugin_init()
{
register_plugin("Head Splash", PLUGIN_VERSION, "potatis_invalido"); // Register the plugin.
amx_headsplash = register_cvar("amx_headsplash", "1"); // Register the on/off cvar.
register_forward(FM_Touch, "forward_touch"); // Register the "touch" forward.
register_forward(FM_PlayerPreThink, "forward_PlayerPreThink"); // TY Alka!
}
public plugin_precache()
{
sprite_blood = precache_model("sprites/blood.spr");
sprite_bloodspray = precache_model("sprites/bloodspray.spr");
}
public forward_touch(toucher, touched) // This function is called every time a player touches another player.
{
// NOTE: The toucher is the player standing/falling on top of the other (touched) player's head.
if(!is_user_alive(toucher) || !is_user_alive(touched)) // The touching players can't be dead.
return;

if(!get_pcvar_num(amx_headsplash)) // If the plugin is disabled, stop messing with things.
return;

if(falling_speed[touched]) // Check if the touched player is falling. If he/she is, don't continue.
return;

if(get_user_team(toucher) == get_user_team(touched) && !get_cvar_num("mp_friendlyfire")) // If the touchers are in the same team and friendly fire is off, don't continue.
return;

new touched_origin[3], toucher_origin[3];
get_user_origin(touched, touched_origin); // Get the origins of the players so it's possible to check if the toucher is standing on the touched's head.
get_user_origin(toucher, toucher_origin);

new Float:toucher_minsize[3], Float:touched_minsize[3];
pev(toucher,pev_mins,toucher_minsize);
pev(touched,pev_mins,touched_minsize); // If touche*_minsize is equal to -18.0, touche* is crouching.

if(touched_minsize[2] != -18.0) // If the touched player IS NOT crouching, check if the toucher is on his/her head.
{
if(!(toucher_origin[2] == touched_origin[2]+72 && toucher_minsize[2] != -18.0) && !(toucher_origin[2] == touched_origin[2]+54 && toucher_minsize[2] == -18.0))
{
return;
}
}
else // If the touched player is crouching, check if the toucher is on his/her head
{
if(!(toucher_origin[2] == touched_origin[2]+68 && toucher_minsize[2] != -18.0) && !(toucher_origin[2] == touched_origin[2]+50 && toucher_minsize[2] == -18.0))
{
return;
}
}

if(falling_speed[toucher] >= MINIMUM_FALL_SPEED) // If the toucher is falling in the required speed or faster, then landing on top of the touched's head, do some damage to the touched. MUHAHAHAHAHA!!!
{
new Float:damage = ((falling_speed[toucher] - MINIMUM_FALL_SPEED + 30) * (falling_speed[toucher] - MINIMUM_FALL_SPEED + 30)) / 1300;
if(damage > MAXIMUM_DAMAGE_FROM_JUMP) // Make shure that the touched player don't take too much damage.
damage = MAXIMUM_DAMAGE_FROM_JUMP;
damage_player(touched, toucher, damage); // Damage or kill the touched player.
damage_after[toucher][touched] = 0.0; // Reset.
}
if(is_user_alive(touched) && damage_after[toucher][touched] <= get_gametime()) // This makes shure that you won't get damaged every frame you have some one on your head. It also makes shure that players won't get damaged faster on fast servers than laggy servers.
{
damage_after[toucher][touched] = get_gametime() + DELAY;
damage_player(touched, toucher, DAMAGE); // Damage or kill the touched player.
}
}
public forward_PlayerPreThink(id) // This is called every time before a player "thinks". A player thinks many times per second.
{
//falling_speed[id] = entity_get_float(id, EV_FL_flFallVelocity); // Store the falling speed of the soon to be "thinking" player.
pev(id, pev_flFallVelocity, falling_speed[id])
}
public damage_player(pwned, pwnzor, Float:damage) // Damages or kills a player. Home made HAX
{
new health = get_user_health(pwned);
if(get_user_team(pwned) == get_user_team(pwnzor)) // If both players are in the same team, reduce the damage.
damage /= 1.4;
new CsArmorType:armortype;
cs_get_user_armor(pwned, armortype);
if(armortype == CS_ARMOR_VESTHELM)
damage *= 0.7;
if(health > damage)
{
new pwned_origin[3];
get_user_origin(pwned, pwned_origin);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY); // BLOOOOOOOOOOOD!!
write_byte(TE_BLOODSPRITE);
write_coord(pwned_origin[0]+8);
write_coord(pwned_origin[1]);
write_coord(pwned_origin[2]+26);
write_short(sprite_bloodspray);
write_short(sprite_blood);
write_byte(248);
write_byte(4);
message_end();

new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "trigger_hurt"));
if(!ent)
return;
new value[16];
float_to_str(damage * 2, value, sizeof value - 1);
set_kvd(0, KV_ClassName, "trigger_hurt");
set_kvd(0, KV_KeyName, "dmg");
set_kvd(0, KV_Value, value);
set_kvd(0, KV_fHandled, 0);
dllfunc(DLLFunc_KeyValue, ent, 0);
num_to_str(DMG_GENERIC, value, sizeof value - 1);
set_kvd(0, KV_ClassName, "trigger_hurt");
set_kvd(0, KV_KeyName, "damagetype");
set_kvd(0, KV_Value, value);
set_kvd(0, KV_fHandled, 0);
dllfunc(DLLFunc_KeyValue, ent, 0);
set_kvd(0, KV_ClassName, "trigger_hurt");
set_kvd(0, KV_KeyName, "origin");
set_kvd(0, KV_Value, "8192 8192 8192");
set_kvd(0, KV_fHandled, 0);
dllfunc(DLLFunc_KeyValue, ent, 0);
dllfunc(DLLFunc_Spawn, ent);
set_pev(ent, pev_classname, "head_splash");
dllfunc(DLLFunc_Touch, ent, pwned);
engfunc(EngFunc_RemoveEntity, ent);
}
else
{
new pwned_origin[3];
get_user_origin(pwned, pwned_origin);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY); // BLOOOOOOOOOOOD!!
write_byte(TE_BLOODSPRITE);
write_coord(pwned_origin[0]+8);
write_coord(pwned_origin[1]);
write_coord(pwned_origin[2]+26);
write_short(sprite_bloodspray);
write_short(sprite_blood);
write_byte(248);
write_byte(12);
message_end();

set_pev(pwned, pev_frags, float(get_user_frags(pwned) + 1));
user_silentkill(pwned);
make_deathmsg(pwnzor, pwned, 1, "his/her feet :)");
if(get_user_team(pwnzor) != get_user_team(pwned)) // If it was a team kill, the pwnzor's money should get reduced instead of increased.
{
set_pev(pwnzor, pev_frags, float(get_user_frags(pwnzor) + 1));
cs_set_user_money(pwnzor, cs_get_user_money(pwnzor) + 300);
}
else
{
set_pev(pwnzor, pev_frags, float(get_user_frags(pwnzor) - 1));
cs_set_user_money(pwnzor, cs_get_user_money(pwnzor) - 300);
}

message_begin(MSG_ALL, get_user_msgid("ScoreInfo")); // Fixes the scoreboard.
write_byte(pwnzor);
write_short(get_user_frags(pwnzor));
write_short(cs_get_user_deaths(pwnzor));
write_short(0);
write_short(get_user_team(pwnzor));
message_end();

message_begin(MSG_ALL, get_user_msgid("ScoreInfo"));
write_byte(pwned);
write_short(get_user_frags(pwned));
write_short(cs_get_user_deaths(pwned));
write_short(0);
write_short(get_user_team(pwned));
message_end();
set_pev(pwned, pev_frags, float(get_user_frags(pwned) - 1));
}
}

[ROZWIĄZANE] Szukam Licznik Lj100aa

15.10.2011 19:05

Witam. Szukam licznik lj 100aa. (sv_airaccelerate 100). Główne liczniki, których potrzebuje to LJ i CJ ( Reszta mniej ważne ). Ma być ljtop i tak. Po skoku po prawej by było info o strefach ( ile % synch, gail ) Na dole po skoku wyżej 240, czy jak w przypadku CJ 250 pisało przykładowo Test skoczył 250unitow techniką LJ Maxspeed (320) Prestrafe 275. Coś w tym stylu. By te info były .

item wybuchający po śmierci + hud pytanie

10.10.2011 15:50

Witam. Chciałem dodać do itemu, który wybucha po śmierci tekst, który mówi " Podczas umierania gracz (nick) wybuchł zabijając przy tym (ilość) wrogów " i nie do końca sobie z tym poradziłem. Chciałem by wyglądało to tak: Tekst był na żółto i na środku ( Jest ), wyświetlał się wszystkim po wybuchu ( Nie działa ), 8 sec widnieje tekst ( działa ), Wyświetlanie nick gracza ( Działa ), Wyświetlanie info o ilości zabitych wrogów ( Nie działa ) , gdy zginie 1 wróg by pisało "[...] 1 wroga", gdy zginie więcej lub 0 "[...] (ilosc) wrogów" . No i dalej nie wiem co dopisać by było tak jak chce. Jak na razie mam tak.

Do plugin eksploduj dodałem


	    new name[33];
get_user_name(id, name, 32);

set_hudmessage(255, 255, 0, -1.0, 0.3, 0, 6.0, 8.0);
show_hudmessage(id, "Podczas umierania gracz %s wybuchl zabijajac przy tym x wrogow", name);


Proszę o pomoc . Nie wiem co dalej by działało tak jak chciało

[ROZWIĄZANE] item wybuchający po śmierci pytanie

08.10.2011 16:26

Witam mam pytanie. Która linijka z poniższego kodu odpowiada za promien okręgu w którym zostają zabici gracze. Chciałbym go zwiększyć :) . Proszę o pomoc .

public Eksploduj(id)
{
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( id, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();

message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
write_byte( TE_BEAMCYLINDER );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] );
write_coord( iOrigin[2] );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] + 300 );
write_coord( iOrigin[2] + 300 );
write_short( sprite_white );
write_byte( 0 ); // startframe
write_byte( 0 ); // framerate
write_byte( 10 ); // life
write_byte( 10 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 100 );// r, g, b
write_byte( 100 ); // r, g, b
write_byte( 128 ); // brightness
write_byte( 8 ); // speed
message_end();
new entlist[33];
new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);

for (new i=0; i < numfound; i++)
{
new pid = entlist[i];

if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid) || informacje_przedmiotu_gracza[pid][0] == 24)
continue;
ExecuteHam(Ham_TakeDamage, pid, 0, id, 150.0+float(inteligencja_gracza[id]) , 1); //ta linijka odpowiada za obrazenia, aktualnie zadaje 100dmg +int.
}
return PLUGIN_CONTINUE;
}

Mała zmiana w zapis fragow by DarkGL

05.10.2011 15:10

Witam. Prosiłbym o zmienienie poniższego pluginu tak by fragi się zapisywały w miejsce deadów, a deady wcale . I żeby było na nick ( Z tym to sobie akurat poradze ) :)
Z góry dzięki

#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "Stats All The Time"
#define VERSION "1.0"
#define AUTHOR "DarkGL"
new bool:bFirst[33];
new nvault;
new pcvar_typ
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

pcvar_typ = register_cvar("stats_save_typ","1") // 1 - nick 2 - steam id

nvault = nvault_open("StatsAllTheTime")

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

register_event("DeathMsg", "DeathMsg", "a")

register_event("TextMsg","autostartrr","a","2&#Game_C");

}
public spawned(id){
if(!is_user_alive(id) || !bFirst[id]){
return HAM_IGNORED;
}

wczytaj_i_ustaw(id);

bFirst[id] = false;

return HAM_IGNORED;
}
public wczytaj_i_ustaw(id){
new key[64],data[128]
switch(get_pcvar_num(pcvar_typ)){
case 1:
{
get_user_name(id,key,63);
}
case 2:
{
get_user_authid(id,key,63);
}
}
nvault_get(nvault,key,data,127);

fm_set_user_frags(id,str_to_num(data));
}
public zapisz(id){
new key[64],data[128]
switch(get_pcvar_num(pcvar_typ)){
case 1:
{
get_user_name(id,key,63);
}
case 2:
{
get_user_authid(id,key,63);
}
}
format(data,charsmax(data),"%i",get_user_frags(id));
nvault_set(nvault,key,data)
}
public client_connect(id){
bFirst[id] = true;
}
public DeathMsg()
{
new kid = read_data(1) //zabojca

zapisz(kid);

}
public autostartrr(id){
for(new i = 0;i<33;i++){
bFirst[i] = true;
}
}
stock fm_set_user_frags(index, frags) {
set_pev(index, pev_frags, float(frags));
return 1;
}