←  Gotowe funkcje

AMXX.pl: Support AMX Mod X i SourceMod

»

Dodawanie Fraga za zabicie członka drużyny.

  • +
  • -
nad3jf - zdjęcie nad3jf 08.05.2010

Jak każdy z Was wie Counter Strike 1.6 za zabicie członka drużyny odbiera dwa fragi. Jednak w niektórych modyfikacjach przydaję się aby dość, że nie zabierało to dodatkowo dodawało fraga.

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>

#define PLUGIN "Fragi za Team Killer"
#define VERSION "1.0"
#define AUTHOR "Nad3jf"

new zabojca
new ofiara
new team_ofiary
new team_zabojcy
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "DeathMsg", "a") // Rejestrujemy Event Smierci Gracza
}

public DeathMsg()
{
zabojca = read_data(1) // Pobieramy id zabojce
ofiara = read_data(2) // Pobieramy id ofiary
set_task(0.1,"statystyki",zabojca,_,0,"a") // Robimy zadanie, ktore wysle id zabojcy do funkcji statystyki
set_task(0.1,"statystyki",ofiara,_,0,"a") // Robimy Zadanie, ktore wysle id ofiary do funkcji statystyki.

}
public statystyki()
{
team_ofiary = get_user_team(ofiara) // Pobieramy team ofiary
team_zabojcy = get_user_team(zabojca) // Pobieramy team zabojcy
if(team_zabojcy == team_ofiary) // Jezeli sa z jednego teamu to:
{
new fragi = get_user_frags(zabojca) // Pobiera obecna liczbe fragow
set_user_frags(zabojca,fragi + 2) // Ustawia liczbe fragow na poprawna wartosc po zabiciu
}

}

Użytkownik nad3jf edytował ten post 08.05.2010 17:40
Odpowiedz

  • +
  • -
sbstn - zdjęcie sbstn 08.05.2010

Po co to komu...
Czary mary, hokus pokus, bum bum 38linijkek vs. 18 !! Oszczędzasz pamięć i miejsce.
#include <amxmodx>
#include <fun>

public plugin_init()
{
register_event("DeathMsg", "Death", "a")
}

public Death()
{
new killer=read_data(1)
new victim=read_data(2)

if(get_user_team(killer)==get_user_team(victim))
{
set_user_frags(killer,get_user_frags(killer)+2)
}
}
Odpowiedz

  • +
  • -
nad3jf - zdjęcie nad3jf 08.05.2010

A no w sumie nie przemyślałem. Optymalizacja to niestety nie moja dobra strona. :wstyd:
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 08.05.2010

set_task(0.1,"statystyki",zabojca,_,0,"a") // Robimy zadanie, ktore wysle id zabojcy do funkcji statystyki
        set_task(0.1,"statystyki",ofiara,_,0,"a")


hmm po co wywolujesz taska z takimi parametrami skoro funkcja zadnych nie ma :?: mogles np dac w jednym tasku id 333 a w drugim 444

nie sprawdzalem jak jest z tym eventem ale jesli jest on wywolywany gdy sami zginiemy to co wtedy :?:

nie przypisuj danych z eventow do globalnych zmiennych jesli chcesz ich uzyc w innej funkcji bo po to sa wlasnie w funkcjach parametry i troche trudniejsza rzecz a mianowicie referencja


aha no i oczywiscie set_user_frags nie zmienia danych w tablicy musicie wyslac do silnika "wiadomosc" - message zeby to zmienic bo tak to efekt nie bedzie widoczny :D
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 09.05.2010

Można użyć hamsandwicha i na moment przed śmiercią zmienić team ofiary po czym zaraz zmienić go na poprzedni :>
I to nawet da fraga nie będą to mniejsze obrażenia (do teamu są mniejsze) i dostaniemy hajs :>
Odpowiedz

  • +
  • -
QTM. Peyote - zdjęcie QTM. Peyote 10.05.2010

Tutaj według pomysłu Verticus'a:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "Bij Wszystkich"
#define VERSION "0.1"
#define AUTHOR "QTM_Peyote"

new bool: zmienione[33]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_TakeDamage, "player", "PlayerTakeDamage")
RegisterHam(Ham_TakeDamage, "player", "PlayerTakeDamagePost", 1)
}

public PlayerTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
new victim_team = get_user_team(this)
if(victim_team == get_user_team(idattacker))
{
switch(victim_team)
{
case 1: cs_set_user_team(this, 2)
case 2: cs_set_user_team(this, 1)
}
zmienione[this] = true
}
}

public PlayerTakeDamagePost(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(zmienione[this])
{
switch(get_user_team(this))
{
case 1: cs_set_user_team(this, 2)
case 2: cs_set_user_team(this, 1)
}
zmienione[this] = false
}
}

public client_connect(id)
zmienione[id] = false


Można dodać tylko w Ham_Killed, ale wtedy obrażenia będą zmniejszone.
Użytkownik QTM_Peyote edytował ten post 10.05.2010 13:13
Odpowiedz