←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Podbijanie bytu [gracza]

  • +
  • -
Krytykiewicz - zdjęcie Krytykiewicz 22.11.2012

A skąd Ty możesz wiedzieć czy to jest możliwe czy nie. Testowałeś? Bo ja owszem, wszystkie wersje. Jeśli chcesz to sobie przetestuj jeśli mi nie wierzysz. Działa tylko jak gracz podskoczy.
Odpowiedz

  • +
  • -
radim - zdjęcie radim 22.11.2012

Testowałem mój kod, który wywoływałem za pomocą "radio3" i działa bez zarzutów więc nie wiem o czym mowa. Dobrze by było gdybyś pokazał swój kod..
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 22.11.2012

No właśnie nie ma różnicy, bo sprawdzałem i wszystkie kody działają wtedy, gdy gracz podskoczy. Twój też speedkill. Bardzo dziękuję za zaangażowanie i każda pomoc się dla mnie liczy ! :)

Ale tutaj nie chodzi o taką różnicę.

Spróbuj tego
#include <amxmodx>
#include <amxmisc>
#include <engine>

#define PLUGIN "Plugin"
#define VERSION "0.1"
#define AUTHOR "Sebul"

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

register_event("Damage", "Damage", "b", "2!0");
}

public Damage(id) {
if(is_user_alive(id)) {
new kid = get_user_attacker(id);
if(is_user_connected(kid) && get_user_team(id) != get_user_team(kid)) {
new Float:velocity[3];
entity_get_vector(id, EV_VEC_velocity, velocity);
velocity[2] += random_float(265.0,285.0);
entity_set_vector(id, EV_VEC_velocity, velocity);
}
}
}

lub tego
#include <amxmodx>
#include <amxmisc>
#include <engine>

#define PLUGIN "Plugin"
#define VERSION "0.1"
#define AUTHOR "Sebul"

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

register_event("Damage", "Damage", "b", "2!0");
}

public Damage(id) {
if(is_user_alive(id)) {
new kid = get_user_attacker(id);
if(is_user_connected(kid) && get_user_team(id) != get_user_team(kid)) {
set_task(0.1, "UderzGracza", id);
}
}
}

public UderzGracza(id) {
if(is_user_alive(id)) {
new Float:velocity[3];
entity_get_vector(id, EV_VEC_velocity, velocity);
velocity[2] += random_float(265.0,285.0);
entity_set_vector(id, EV_VEC_velocity, velocity);
}
}

W obydwu pluginach możesz próbować też zamieniać += na = i sprawdzić jak będzie działać (bo tutaj będzie różnica).
Odpowiedz

  • +
  • -
Krytykiewicz - zdjęcie Krytykiewicz 22.11.2012

Testowałem mój kod, który wywoływałem za pomocą "radio3" i działa bez zarzutów więc nie wiem o czym mowa. Dobrze by było gdybyś pokazał swój kod..


Jeśli chcesz, to możesz wpaść na mój serwer testowy ;) Tylko na PW wyraź chęć i możemy poprzez STEAM się skontaktować.

@@sebul, zaraz przetestuję.

Sebul, genialny jesteś, ten drugi kod działa, ale ale ale! Już wiem dlaczego pewnie poprzednie wersje nie działały. damage_control koliduje i gryzie się. Gdy włączam ten plugin, to ten pierwszy kod nie działa w ogóle sebula, a ten drugi działa gdy gracz podskoczy, natomiast gdy wywalę plugin damage_control to ten pierwszy kod nadal nie działa, a drugi działa niezależnie czy gracz podskoczy czy nie. Więc teraz kwestia tego, że dla danej broni inny odrzut, a dla knife w ogóle nie ma.
Użytkownik Krytykiewicz edytował ten post 22.11.2012 19:37
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 22.11.2012

Wyłącz ten plugin damage_control, i sprawdź ten kod co podałem Ci go na poprzedniej stronie ;)

Jak testowałem, to dla noża działał.
Odpowiedz

  • +
  • -
Krytykiewicz - zdjęcie Krytykiewicz 22.11.2012

Nie, nie działa nawet przy wyłączonym damage_control.

W dalszym ciągu apeluję o to jak zrobić, aby dla danej broni mniej/wyżej podbijało oraz żeby to działało z damage_control [ kod drugi sebula ].
Bardzo Was kochani proszę, jesteście moją nadzieją :)
Użytkownik Krytykiewicz edytował ten post 22.11.2012 20:11
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 22.11.2012

Inne kody mogą nie działać, bo po prostu po zadaniu obrażeń także zmienia się velocity gracza, dlatego w moim drugim kodzie jest task. A co do pluginu damage_control, to jeśli zmienia on velocity gracza, to musisz podać jego kod, może coś da się zrobić.
Odpowiedz

  • +
  • -
Krytykiewicz - zdjęcie Krytykiewicz 22.11.2012

Udało się, naprawiłem sam. Nie trzeba było nic ingerować w damage_control. Poprawiłem nieco Twój plugin sebul, aby dostosować pod biohazard. Dzięki serdeczne, a teraz tylko trzeba zrobić, że dla danej broni inne podbijanie.
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 22.11.2012

http://amxx.pl/dokum...get-user-weapon + warunek dla danej broni (CSW_*)
Odpowiedz

  • +
  • -
Pan PrO - zdjęcie Pan PrO 22.11.2012

Sprawdź



#include <amxmodx>
#include <amxmisc>
#include <engine>

#define PLUGIN "Plugin"
#define VERSION "0.1"
#define AUTHOR "Sebul"

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

register_event("Damage", "Damage", "b", "2!0");
}

public Damage(id)
{
if(is_user_alive(id))
{
new kid = get_user_attacker(id);
if(is_user_connected(kid) && get_user_team(id) != get_user_team(kid))
set_task(0.1, "UderzGracza", id);
}
}

public UderzGracza(id)
{
if(is_user_alive(id))
{
new Float:velocity[3];
entity_get_vector(id, EV_VEC_velocity, velocity);
velocity[2] += PobierzSileDlaBroni(id, get_user_weapon(id));
entity_set_vector(id, EV_VEC_velocity, velocity);
}
}

public PobierzSileDlaBroni(id, bron)
{
new Float:sila;
switch(bron)
{
case CSW_KNIFE: sila = random_float(285.0, 300.0);// Tu dodajesz bronie i wartosci dla niej
case CSW_AK47: sila = random_float(245.0, 265.0);
case CSW_M4A1: sila = random_float(256.0, 275.0);
default: sila = random_float(265.0,285.0); // Jesli gracz nie ma broni z wyżej wymienionych to jaka sile ma ustawic
}
return sila;
}

Użytkownik Pan PrO edytował ten post 22.11.2012 21:13
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 22.11.2012

Udało się, naprawiłem sam. Nie trzeba było nic ingerować w damage_control. Poprawiłem nieco Twój plugin sebul, aby dostosować pod biohazard. Dzięki serdeczne, a teraz tylko trzeba zrobić, że dla danej broni inne podbijanie.

#include <amxmodx>
#include <amxmisc>
#include <engine>

#define PLUGIN "Plugin"
#define VERSION "0.1"
#define AUTHOR "Sebul"

new const Float:g_sila[][] = {
{250.0,300.0},
{260.0,300.0},
{270.0,300.0},
{280.0,300.0}
}
// w tabeli g_sila ma być 31 elementów (wierszów)

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

register_event("Damage", "Damage", "b", "2!0");
}

public Damage(id) {
if(is_user_alive(id)) {
new weapon, kid = get_user_attacker(id, weapon);
if(is_user_connected(kid) && get_user_team(id) != get_user_team(kid)) {
new data[2];
data[0] = kid;
data[1] = weapon;
set_task(0.1, "UderzGracza", id, data, 2);
}
}
}

public UderzGracza(data[2], id) {
if(is_user_alive(id)) {
new Float:velocity[3];
entity_get_vector(id, EV_VEC_velocity, velocity);
velocity[2] += random_float(g_sila[data[1]][0],g_sila[data[1]][1]);
entity_set_vector(id, EV_VEC_velocity, velocity);
}
}

Tylko uzupełnij sobie tablicę "g_sila".
Odpowiedz

  • +
  • -
Krytykiewicz - zdjęcie Krytykiewicz 22.11.2012

Pan PrO - chciałem optymalnie. W takowy sposób sam bym sobie to zrobił, ale wole optymalnie jak tak sebul.

Co do uzupełnienia, to rozumiem, iż kolejność broni jest taka: http://amxx.pl/topic...ive-item-speed/ ? Chciałbym też ominąć odpychania, np. granat czy też nóż. Zostawić po prostu puste pole poprzez _ ?
sebul (22.11.2012 21:46):
Tak

Użytkownik Krytykiewicz edytował ten post 22.11.2012 21:46
Odpowiedz

  • +
  • -
Krytykiewicz - zdjęcie Krytykiewicz 22.11.2012

Zrobiłem tak:



new const Float:g_sila[][] = {
{}, // NULL
{5.0,50.0}, // CSW_P228
{}, // NULL
{50.0,150.0}, // CSW_SCOUT
{}, // CSW_HEGRENADE
{25.0,50.0}, // CSW_XM1014
{}, // CSW_C4
{250.0,300.0}, // CSW_MAC10
{250.0,300.0}, // CSW_AUG
{}, // CSW_SMOKEGRENADE
{250.0,300.0}, // CSW_ELITE
{250.0,300.0}, // CSW_FIVESEVEN
{250.0,300.0}, // CSW_UMP45
{250.0,300.0}, // CSW_SG550
{250.0,300.0}, // CSW_GALIL
{250.0,300.0}, // CSW_FAMAS
{250.0,300.0}, // CSW_USP
{250.0,300.0}, // CSW_GLOCK18
{1500.0,2000.0}, // CSW_AWP
{250.0,300.0}, // CSW_MP5NAVY
{250.0,300.0}, // CSW_M249
{250.0,300.0}, // CSW_M3
{250.0,300.0}, // CSW_M4A1
{250.0,300.0}, // CSW_TMP
{600.0,1300.0}, // CSW_G3SG1
{}, // CSW_FLASHBANG
{250.0,300.0}, // CSW_DEAGLE
{250.0,300.0}, // CSW_SG552
{250.0,300.0}, // CSW_AK47
{}, // CSW_KNIFE
{250.0,300.0} // CSW_P90
}


kolejność wzięta z bio_knockaback -> http://amxx.pl/topic...-bio-knockback/ i niestety nie jest to poprawne. Mówiłeś, że 31 tablic musi być, tutaj właśnie jest 31. Dodatkowo jak zrobię "_" zamiast { } to wywala błąd.
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 23.11.2012

Nie możesz robić tak
{},

jak już to
{0.0,0.0},

A funkcję
public UderzGracza(data[2], id) {
if(is_user_alive(id)) {
new Float:velocity[3];
entity_get_vector(id, EV_VEC_velocity, velocity);
velocity[2] += random_float(g_sila[data[1]][0],g_sila[data[1]][1]);
entity_set_vector(id, EV_VEC_velocity, velocity);
}
}

możesz zamienić na
public UderzGracza(data[2], id) {
if(is_user_alive(id) && g_sila[data[1]][1] > 0) {
new Float:velocity[3];
entity_get_vector(id, EV_VEC_velocity, velocity);
velocity[2] += random_float(g_sila[data[1]][0],g_sila[data[1]][1]);
entity_set_vector(id, EV_VEC_velocity, velocity);
}
}
Odpowiedz