Podbijanie bytu [gracza]
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.
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..
sebul
22.11.2012
Ale tutaj nie chodzi o taką różnicę.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 !
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).
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

@@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
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ł.

Jak testowałem, to dla noża działał.
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
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
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ć.
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.
K!113r
22.11.2012
http://amxx.pl/dokum...get-user-weapon + warunek dla danej broni (CSW_*)
Pan PrO
22.11.2012
Sprawdź
Użytkownik Pan PrO edytował ten post 22.11.2012 21:13
#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
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".
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 _ ?
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 _ ?
Użytkownik Krytykiewicz edytował ten post 22.11.2012 21:46
Krytykiewicz
22.11.2012
Zrobiłem tak:
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.
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.
sebul
23.11.2012
Nie możesz robić tak
jak już to
A funkcję
możesz zamienić na
{},
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);
}
}