←  Szukam pluginu

AMXX.pl: Support AMX Mod X i SourceMod

»

HE za zabicie - ktoś napisze / znajdzie?

Zablokowany

  • +
  • -
Karpaj - zdjęcie Karpaj 23.06.2011

Witam. Potrzebował bym plugin, który będzie dawać graczowi za zabicie kogokolwiek granat HE.
Najlepiej jakby oprócz tego była procentowa szansa na to ze dostanie ten HE (np. 33%)
A jeśli ktoś miałby chęci aby się jeszcze pobawić to chciałbym aby po udanych otrzymaniu HE pojawił się komunikat w chacie " [PREFIX] Otrzymales granat HE za zabicie xxx "
Prefix moze byc w cvarze bądź sma (tak samo jak % szans na zdobycie HE)

Jeśli ktoś potrafi napisać chociaż pierwszą część - czyli otrzymanie HE za zabicie kogoś już będę wdzięczny :)
Odpowiedz

Dwdov - zdjęcie Dwdov 23.06.2011

Czekaj, za chwile będzie sma zapomniałem dodać że 1/3 szansy :P (1/3 = 33,3 %)

Dodano 23 czerwiec 2011 - 14:58:
Post wyżej zreportowałem do usunięcia (ten mój jak coś), dlatego że nie mogę go edytować.
Tutaj jest sma, przekompiluj sobie

#include <amxmodx>
#include <fakemeta>
#include <ColorChat>

#define PLUGIN "Dawedov"
#define AUTHOR "He za kill"
#define VERSION "1.0"

new gSzPrefix[64];

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_event("DeathMsg", "DeathEventHook", "ade")

register_cvar("amx_hegren_prefix","[TAG]")
register_cvar("amx_hegren_chance","3")

get_cvar_string("amx_hegren_prefix",gSzPrefix,63);
}
public DeathEventHook()
{
new attacker = read_data(1)
new victim = read_data(2)

if(get_user_team(attacker) == get_user_team(victim))
return;

if(random(get_cvar_num("amx_hegren_chance")) == 1)
{
fm_give_item(attacker,"weapon_hegrenade");
ColorChat(attacker,GREEN,"%s^x01 Dostales granat HE za zabicie wroga.",gSzPrefix)
}
}
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0;

new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
if (!pev_valid(ent))
return 0;

new Float:origin[3];
pev(index, pev_origin, origin);
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);

new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);
if (pev(ent, pev_solid) != save)
return ent;

engfunc(EngFunc_RemoveEntity, ent);

return -1;
}


Dodano 23 czerwiec 2011 - 14:59:
Ehh nie ogarniam tego forum :P
Użytkownik Dawedov edytował ten post 23.06.2011 14:45
Odpowiedz

  • +
  • -
Karpaj - zdjęcie Karpaj 23.06.2011

#define PLUGIN "Dawedov"
#define AUTHOR "He za kill"


Chyba odwrotnie :P

ColorChat(attacker,GREEN,"%s^x01 Dostales granat HE za zabicie wroga.",gSzPrefix)

Co oznacza to
%s^x01

I wielkie dzięki za plugin :)
Odpowiedz

Dwdov - zdjęcie Dwdov 23.06.2011

%s <- "wkleja" do tego ciągu to co jest podane dalej w dodatkowych parametrach
^x01 <- zmienia kolor na podstawowy (standardowo pomarańczowy)


No tam pomyliłem, ale to nie ważne ; d
A jeszcze co do cvara amx_hegren_chance, jego wartość to x w takim razie szansa otrzymania HE po zabiciu wynosi 1/x. Normalnie ustawione na 1/3 czyli 33% tak jak chciałeś ; d
Użytkownik Dawedov edytował ten post 23.06.2011 17:59
Odpowiedz

  • +
  • -
Karpaj - zdjęcie Karpaj 23.06.2011

To jedyny cvar w tym? Bo nigdzie ich nie wypisałeś, a nie jestem na tyle ogarnięty z pawnem aby w pluginie znaleźć cvary
A oprócz tego, czy nie powinno być tak?
[%s]^x01
Bo to rozumiem że będzie ten prefix
Odpowiedz

Dwdov - zdjęcie Dwdov 23.06.2011

Co za różnica? Wpisujesz w konsoli:
amx_cvar amx_hegren_prefix "[PREFIX]"
i masz z nawiasami.


Są 2 cvary
amx_hegren_prefix - ustawia tag/prefix jak kto woli
amx_hegren_chance - szansa 1/x dostania granatu, można zrobić też na procenty (ale to w sma trzeba zmienić), ale po co się z tym bawić (chociaż kod będzie nie dużo dłuższy ; d)


Odpowiedz

  • +
  • -
Karpaj - zdjęcie Karpaj 23.06.2011

Niestety plugin nie działa, zarówno nie pokazuje się info o tym czy sie dostało, jak i nie dostaje się go... Testowałem z kolegą, zabiliśmy się z 30razy i nic, kompilowałem zarówno z opcją
register_cvar("amx_hegren_chance","3")
jak i
register_cvar("amx_hegren_chance","1")

Czemu to nie chce działać? :/
Odpowiedz

Dwdov - zdjęcie Dwdov 23.06.2011

Nie wiem czemu to może nie działać, wszystko na moje oko jest dobrze, trochę zmieniłem może teraz będzie dobrze.


#include <amxmodx>
#include <fakemeta>
#include <ColorChat>

#define PLUGIN "He za kill"
#define AUTHOR "Dawedov"
#define VERSION "1.0"

new gCvarHeGrenChance;
new gSzPrefix[64];

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_event("DeathMsg", "DeathEventHook", "ade")

register_cvar("amx_hegren_prefix","[TAG]")
gCvarHeGrenChance = register_cvar("amx_hegren_chance","3")

get_cvar_string("amx_hegren_prefix",gSzPrefix,63);
}
public DeathEventHook()
{
new attacker = read_data(1)
new victim = read_data(2)

if(get_user_team(attacker) == get_user_team(victim)
|| !attacker
|| !is_user_alive(attacker))
return;

new temp = get_pcvar_num(gCvarHeGrenChance);
if(random(temp) == 1)
{
fm_give_item(attacker,"weapon_hegrenade");
ColorChat(attacker,GREEN,"%s^x01 Dostales granat HE za zabicie wroga.",gSzPrefix)
}
}
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0;

new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
if (!pev_valid(ent))
return 0;

new Float:origin[3];
pev(index, pev_origin, origin);
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);

new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);
if (pev(ent, pev_solid) != save)
return ent;

engfunc(EngFunc_RemoveEntity, ent);

return -1;
}



Użytkownik Dawedov edytował ten post 23.06.2011 19:42
Odpowiedz

  • +
  • -
Karpaj - zdjęcie Karpaj 23.06.2011

Tutaj niestety też nie działa... ABy było 100% szans wystarczy
("amx_hegren_chance","3")
zmienić na
("amx_hegren_chance","1")
? I czy plugin sprawdza czy ktoś już posiada granat HE?
Odpowiedz

Dwdov - zdjęcie Dwdov 23.06.2011

Po co ma sprawdzać czy ktoś już posiada HE? Więcej niż 1 i tak nie można mieć bez specjalnej edycji, a czemu plugin nie działa - nie mam pojęcia lol... nie wiem niech ktoś inny to sprawdzi bo ja tu błędu nie widzę ;x
Odpowiedz

mierzwi - zdjęcie mierzwi 23.06.2011

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta_util>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new const g_szPrefix[] = "[PREFIX]";

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_event("DeathMsg", "eventPlayerDeath", "a");

// Add your code here...
}

public eventPlayerDeath()
{
new iKiller = read_data(1);
new iVictim = read_data(2);

if(get_user_team(iKiller) != get_user_team(iVictim))
{
if(random_num(1, 3) == 1)
{
fm_give_item(iKiller, "weapon_hegrenade");
client_print(iKiller, print_chat, "%s Dostales He Grenade za zabicie wroga!", g_szPrefix);
}
}

return PLUGIN_CONTINUE;
}


Użytkownik funfel edytował ten post 23.06.2011 22:08
Odpowiedz

  • +
  • -
Karpaj - zdjęcie Karpaj 24.06.2011

Bardzo fajnie, jednak trochę go testując, granat otrzymywały tylko osoby z adminem na serverze i to zawsze, a nie 33% szans, osoby bez admina nie dostawały go ani razu... Ocb?
Użytkownik Karpaj edytował ten post 24.06.2011 11:55
Odpowiedz

Dwdov - zdjęcie Dwdov 24.06.2011

No to możliwe że masz coś z amxx'em no bo obydwa pluginy są dobrze napisane ; o
Odpowiedz

NimFresh - zdjęcie NimFresh 24.06.2011

no plugin dobry bo sprawdzalem a jaki masz system na serwie?
Odpowiedz

  • +
  • -
Szomej ! - zdjęcie Szomej ! 24.06.2011

Mi Wszystko działa !
Odpowiedz
Zablokowany