Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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
 

Zdjęcie

[ROZWIĄZANE] CurWeapon stała prędkość


  • Zamknięty Temat jest zamknięty
20 odpowiedzi w tym temacie

#1 shakerek

    Profesjonalista

  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 22.08.2012 01:33

Witam, chciałbym prosić o pomoc posiadam ową funkcję która daje stałą prędkość gdy trzymamy broń ona działa ogólnie ale jest problem kiedy wystrzelimy cały magazynek z broni nagle dostajemy super prędkość i możemy tak biegać aż nie zmienimy broni na jakaś inną.

Funkcja ta działa tylko tak jak wspomniałem przy wystrzeleniu całej amunicji mamy super speeda zależy mi aby się go nie otrzymywało :>

Funkcja obecna Cura którą mam w pluginie


public CurWeapon(id)
{
if( !zp_get_user_zombie(id) && is_user_alive(id) )
{
new Float:speed[32];
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
set_pev(id, pev_maxspeed, speed[id] )
}
}


Pomoc będzie nagrodzona plusikiem.

Użytkownik shakerek edytował ten post 22.08.2012 01:35


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6034
Godlike

  • Postów:10832
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 22.08.2012 02:16

fm_get_user_maxspeed(id)
tu masz błąd

Użytkownik DarkGL edytował ten post 24.08.2012 13:37

  • +
  • -
  • 0

#3 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 22.08.2012 11:41

Rozbudowałem nieco bardziej kod z wyciągnięty z poprzedniej funkcji niestety to też nie działa.
Nie mam pojęcia co źle robię poszukam jeszcze w silniku Zombie Plague bo może tam coś się koliduje.

Podkreślę jeszcze raz speed działa ale problem tkwi że gdy gracz ma mały level ( teorytycznie powinien mieć małego speeda ) po wystrzystkich kul z broni dostajemy super speeda.
Funkcja speeda działa daje dla graczy speeda takiego jak ustawię w cvarach.

Nowy CurWeapon który działa jak poprzednik po wystrzeleniu wszystkich kul z broni dostajemy speeda.
public CurWeapon(id)
{
if( !zp_get_user_zombie(id) && is_user_alive(id) )
{
g_trime[id] = false;
new n = 1;
while( n < g_level[id] )
{
h_speed[id] = n * get_pcvar_num(g_h_speed);
n = n + 1
}
new Float:speed[32];
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
set_pev(id, pev_maxspeed, speed[id] )
}
}

Funkcja z której korzystałem

public Level(id)
{
if( !zp_get_user_zombie(id) && is_user_alive(id) )
{
g_trime[id] = false;
new n = 1;
while( n < g_level[id] )
{
h_health[id] = n * get_pcvar_num(g_h_health);
h_damage[id] = n * get_pcvar_num(g_h_damage);
z_damage[id] = n * get_pcvar_num(g_z_damage);
h_speed[id] = n * get_pcvar_num(g_h_speed);
n = n + 1
}
new Float:speed[32];
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
fm_set_user_health( id, get_user_health(id) + h_health[id] )
set_pev(id, pev_maxspeed, speed[id] )
//set_user_maxspeed(id, speed[id])
emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
}
}

Funkcja kolejna, prawdopodobnie odpowiada za wczytanie statystyk SPEED HP i DMG
public client_putinserver(id)
{
Level_Load(id)
new name[32]
g_trime[id] = false;
g_bonus[id] = true;
nameid[id] = get_user_name(id, name, sizeof name - 1)
if( !zp_get_user_zombie(id) && is_user_alive(id))
{
g_trime[id] = false;
new n = 1;
while( n != g_level[id] )
{
h_health[id] = n * get_pcvar_num(g_h_health);
h_damage[id] = n * get_pcvar_num(g_h_damage);
z_damage[id] = n * get_pcvar_num(g_z_damage);
h_speed[id] = n * get_pcvar_num(g_h_speed);
n = n + 1;
}
new Float:speed[32];
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
fm_set_user_health( id, get_user_health(id) + h_health[id] )
set_pev(id, pev_maxspeed, speed[id] )
//set_user_maxspeed(id, speed[id])
emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
}

To ogólnie wszystko związane z frazą speed.
Wcześniej pisałeś Dark abym szukał problemu w h_speed to uświadomię ci tylko że jest to CVAR którym mogę regulować speeda ale rozumiem że po takiej ilości którą napisałem w pierwszym poście mogłeś nie wiedzieć.

Czekam na dalszą pomoc.

Użytkownik shakerek edytował ten post 22.08.2012 11:44


#4 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 22.08.2012 13:43

A według mnie problem jest tutaj
new Float:speed[32];
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
set_pev(id, pev_maxspeed, speed[id] )

bo jeśli ktoś tylko strzela, to szybkość mu się nie resetuje i wtedy tak naprawdę za każdym razem jest pobierana aktualna prędkość + dodatkowa, a potem jest to ustawiane, więc po wystrzeleniu całego magazynka mamy dużą prędkość.

Najlepiej będzie, jak każdemu graczowi będziesz zapisywać do jakiejś zmiennej jego maksymalną prędkość i wtedy przypisywał ją tylko w curweapon.
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#5 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 22.08.2012 14:20

Najlepiej będzie, jak każdemu graczowi będziesz zapisywać do jakiejś zmiennej jego maksymalną prędkość i wtedy przypisywał ją tylko w curweapon.


Czyli np jak mam to wykonać? Wczoraj próbowałem z inną funkcją, na wszelakie sposoby i dalej nic z tego.
Tą funkcją probowałem z fixować ale też nie przynosiło rezultatów albo nie działało albo działało z problemem który opisałem powyżej.

RegisterHam(Ham_Player_ResetMaxSpeed,"player","playerResetMaxSpeed",1)

Link do tematu skąd brałem pomysł - http://forums.allied...ad.php?t=141352

Czekam na dalszą pomoc.

#6 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 24.08.2012 11:59

Bump

#7 K!113r

    Czempion

  • Power User

Reputacja: 385
Wszechpomocny

  • Postów:865
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 24.08.2012 13:19

Zbyt długo nie myślałem i wymyśliłem coś, może mało wydajne ale powinno zadziałać, tablica speed[] niech będzie globalną a w curweapon

if(speed[id] == get_user_maxspeed(id))
return PLUGIN_HANDLED
else
{
speed[id] = get_user_maxspeed(id) + h_speed[id]
set_user_maxspeed(id, speed[id])
}

chyba powinno działać ;> (jeżeli się mylę to nie bijcie xD)

Użytkownik K!113r edytował ten post 24.08.2012 13:20

  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#8 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 24.08.2012 14:07

Up możesz podać całą funkcję z public CurWeapon(id)?

Wprowadziłem tak jak napisałeś -

public CurWeapon(id)
{
if(speed[id] == get_user_maxspeed(id))
return PLUGIN_HANDLED
else
{
speed[id] = get_user_maxspeed(id) + h_speed[id]
set_user_maxspeed(id, speed[id])
}

Oraz nie chce się przez to nawet z komplikować może gdzieś błąd popełniłem ale liczę na twoje sprostowanie kodu.

#9 K!113r

    Czempion

  • Power User

Reputacja: 385
Wszechpomocny

  • Postów:865
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 24.08.2012 16:03

speed[] musi być globalną tablicą czyli nad plugin_init() musisz dodać new Float: speed[33]

jakie błędy wywala kompilator?
  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#10 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1662
Godlike

  • Postów:2495
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 24.08.2012 16:42

new Float:gCSWeaponSpeed[32] =
{
0.0,
250.0, // CSW_P228
0.0,
260.0, // CSW_SCOUT
250.0, // CSW_HEGRENADE
240.0, // CSW_XM1014
250.0, // CSW_C4
250.0, // CSW_MAC10
240.0, // CSW_AUG
250.0, // CSW_SMOKEGRENADE
250.0, // CSW_ELITE
250.0, // CSW_FIVESEVEN
250.0, // CSW_UMP45
210.0, // CSW_SG550
240.0, // CSW_GALI
240.0, // CSW_FAMAS
250.0, // CSW_USP
250.0, // CSW_GLOCK18
210.0, // CSW_AWP
250.0, // CSW_MP5NAVY
220.0, // CSW_M249
230.0, // CSW_M3
230.0, // CSW_M4A1
250.0, // CSW_TMP
210.0, // CSW_G3SG1
250.0, // CSW_FLASHBANG
250.0, // CSW_DEAGLE
235.0, // CSW_SG552
221.0, // CSW_AK47
250.0, // CSW_KNIFE
245.0 // CSW_P90
};

new g_lastwpn[33];
new gCurrentFOV[33];

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

register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");
register_event("SetFOV", "Event_SetFOV", "be");
}

public Event_CurWeapon(id)
{
if ( !is_user_alive(id) )

if ( g_lastwpn[id] != read_data(2))
{
set_speed(id);
}

g_lastwpn[id] = read_data(2);
}

public Event_SetFOV(id)
{

if ( !is_user_alive(id) ) return;

new fov = read_data(1);

if ( gCurrentFOV[id] != fov )
{
gCurrentFOV[id] = fov;

switch(g_lastwpn[id]) {
case CSW_SCOUT, CSW_SG550, CSW_AWP, CSW_G3SG1: {
set_speed(id);
}
}
}
}


public set_speed(id)
{
if ( !is_user_alive(id)) return;

new Float:speed;

if ( cs_get_user_vip(id) )
{
speed = 227.0;
}
else
{
new weapon = get_user_weapon(id);

speed = gCSWeaponSpeed[weapon];

if ( gCurrentFOV[id] <= 45 )
{
switch(weapon)
{
case CSW_SCOUT: speed = 220.0;
case CSW_SG550, CSW_AWP, CSW_G3SG1: speed = 150.0;
}
}
}


speed += h_speed[id];

if ( speed != get_user_maxspeed(id) )
{
set_user_maxspeed(id, speed);
}
}
:&

Użytkownik MisieQ edytował ten post 24.08.2012 16:42

  • +
  • -
  • 1

#11 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 24.08.2012 23:30

Nie chciało się zkomplikować to

Error - if ( cs_get_user_vip(id) )

Zastąpiłem - get_user_weapon(id);

Nie wiem czy słusznie ale nie wiedziałem czym inne.

Kod chyba jest najbardziej ogarnięty speed działa wyśmienicie ale jeśli będziemy switchować broń to opadnie do standardowego speeda . . . :D

Użytkownik shakerek edytował ten post 24.08.2012 23:37


#12 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1662
Godlike

  • Postów:2495
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 25.08.2012 14:19

Nie chciało się zkomplikować to

Error - if ( cs_get_user_vip(id) )

Zastąpiłem - get_user_weapon(id);

Nie wiem czy słusznie ale nie wiedziałem czym inne.

Kod chyba jest najbardziej ogarnięty speed działa wyśmienicie ale jeśli będziemy switchować broń to opadnie do standardowego speeda . . . :D


nie obadnie :blink:, masz mapki z vipami? jak tak to zle zrobiles iz to usunoles, jak nie to ci potem kod podesle poprawny dla mapek bez vipow

kod bez vipow
new Float:gCSWeaponSpeed[32] =
{
0.0,
250.0, // CSW_P228
0.0,
260.0, // CSW_SCOUT
250.0, // CSW_HEGRENADE
240.0, // CSW_XM1014
250.0, // CSW_C4
250.0, // CSW_MAC10
240.0, // CSW_AUG
250.0, // CSW_SMOKEGRENADE
250.0, // CSW_ELITE
250.0, // CSW_FIVESEVEN
250.0, // CSW_UMP45
210.0, // CSW_SG550
240.0, // CSW_GALI
240.0, // CSW_FAMAS
250.0, // CSW_USP
250.0, // CSW_GLOCK18
210.0, // CSW_AWP
250.0, // CSW_MP5NAVY
220.0, // CSW_M249
230.0, // CSW_M3
230.0, // CSW_M4A1
250.0, // CSW_TMP
210.0, // CSW_G3SG1
250.0, // CSW_FLASHBANG
250.0, // CSW_DEAGLE
235.0, // CSW_SG552
221.0, // CSW_AK47
250.0, // CSW_KNIFE
245.0 // CSW_P90
};

new g_lastwpn[33];
new gCurrentFOV[33];

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

register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");
register_event("SetFOV", "Event_SetFOV", "be");
}

public Event_CurWeapon(id)
{
if ( !is_user_alive(id) )

if ( g_lastwpn[id] != read_data(2))
{
set_speed(id);
}

g_lastwpn[id] = read_data(2);
}

public Event_SetFOV(id)
{

if ( !is_user_alive(id) ) return;

new fov = read_data(1);

if ( gCurrentFOV[id] != fov )
{
gCurrentFOV[id] = fov;

switch(g_lastwpn[id]) {
case CSW_SCOUT, CSW_SG550, CSW_AWP, CSW_G3SG1: {
set_speed(id);
}
}
}
}


public set_speed(id)
{
if ( !is_user_alive(id)) return;

new Float:speed;


new weapon = get_user_weapon(id);

speed = gCSWeaponSpeed[weapon];

if ( gCurrentFOV[id] <= 45 )
{
switch(weapon)
{
case CSW_SCOUT: speed = 220.0;
case CSW_SG550, CSW_AWP, CSW_G3SG1: speed = 150.0;
}
}



speed += h_speed[id];

if ( speed != get_user_maxspeed(id) )
{
set_user_maxspeed(id, speed);
}
}

Użytkownik MisieQ edytował ten post 25.08.2012 14:21

  • +
  • -
  • 0

#13 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 25.08.2012 15:56

Don't work.

Ta funkcja działa jedynie poprawnie

public CurWeapon(id)
{
if( !zp_get_user_zombie(id) && is_user_alive(id) )
{
new Float:speed[32];
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
set_pev(id, pev_maxspeed, speed[id] )
}
}

Tylko tak jak wspomniane jest w pierwszym poście kiedy ktoś wystrzeli cały magazynek dostaje super speeda

Może zapodam plugin a sobie sprawdzicie, ta funkcja powyższa sprawuje się bardzo dobrze twoja MisieQ jest zrobiona na takiej zasadzie tak jak by tego w ogóle nie było zrobione, cholera wie co przeszkadza.

Jest to plugin do ZM jbc. ale zresztą proszę sprawdzić, jak to jest zrobione ja nie wiem jak to ogólnie ustawić.

Podsyłam pierwszą wersję czyli tą co napisałem na początku.

Załączone pliki



#14 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 26.08.2012 14:46

Bump

#15 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 27.08.2012 14:33

Refresh

#16 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 28.08.2012 14:59

Odświeżam

#17 splot

    Życzliwy

  • Zbanowany

Reputacja: 6
Nowy

  • Postów:23
  • Lokalizacja:AMXX Studio
Offline

Napisano 29.08.2012 20:55

Nie lepiej użyć CmdStart ?
register_forward(FM_CmdStart, "RealStartCMD")
public RealStartCMD(id, uc_handle, seed) {
if(!zp_get_user_zombie(id) && is_user_alive(id) && is_user_connected(id)) {
set_user_maxspeed(id, get_user_maxspeed(id) + h+speed[id])
return FMRES_IGNORED
}
return PLUGIN_CONTINUE
}

sebul (30.08.2012 02:10):
Chyba lepiej nie... :facepalm:


#18 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 31.08.2012 22:09

Refresh

#19 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 03.09.2012 08:26

#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <zombieplague>

new bool:g_FreezeTime;

public plugin_init(){
register_plugin("Speed", "5.1.0.2", "benio101 & speedkill");
RegisterHam(Ham_Item_PreFrame, "player", "fw_Player_ResetMaxSpeed", 1);
register_logevent("logevent_round_start", 2, "1=Round_Start");
register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
}
public fw_Player_ResetMaxSpeed(id){
if(is_user_alive(id) && !zp_get_user_zombie(id)){
fw_Player_ResetMaxSpeedVip(id);
}
}
public logevent_round_start(){
g_FreezeTime=false;
}
public event_new_round(){
g_FreezeTime=true;
}
public fw_Player_ResetMaxSpeedVip(id){
if(!g_FreezeTime){
set_user_maxspeed(id,get_user_maxspeed(id) + h_speed[id]);
}
}


#20 shakerek

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 4
Nowy

  • Postów:167
  • Lokalizacja:warszawa
Offline

Napisano 04.09.2012 16:43

Duży plus dla użytkownika benio101

Wszystko działa bez zarzutu, będzie wstawka prawdopodobnie tego pluginu, będzie właśnie tutaj na forum z wszystkimi poprawionymi błędami, będzie można to wrzucić i jazda =)

Dziękuję ślicznie i pozdrawiam Shakerek




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych