Skocz do zawartości

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

Maska przeciwgazowa. Problem z kodem


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

#1 BoB0_

    Wszechpomocny

  • Użytkownik

Reputacja: 38
Życzliwy

  • Postów:365
  • GG:
  • Lokalizacja:Przemyśl
Offline

Napisano 15.08.2011 16:11

Witam.

Udało mi się coś wykombinować z tą maską gazową której szukałem ale kod mi dobrze nie działa. Otóż dźwięki nie są zawsze odtwarzane a jak zdejmiemy maskę podczas odtwarzania to potem dźwięki się bugują i są odtwarzane po 2 razy. Czasami gdy zakładam maskę pisze że Zdjąłem i na odwrót. Czasami też dźwięki w ogóle się nie odtwarzają.

Oto kod:

#include <amxmodx>
#include <cstrike>
#include <fakemeta>

#define VERSION "1.6"

#if AMXX_VERSION_NUM < 180
#define charsmax(%1) sizeof(%1) - 1
#endif

#define OFFSET_CSDEATHS 444
#define OFFSET_TEAM 114
#define TASK_SAP 2948

#define GASP_SOUND1 "player/gasp1.wav"
#define GASP_SOUND2 "player/gasp2.wav"
#define SAP_SOUND1 "player/inhale.wav"
#define SAP_SOUND2 "player/exhale.wav"

#define SMOKEGRENADE_SOUND "weapons/sg_explode.wav"
#define GAS_CLASSNAME "gasgrenade"
#define GASNADE_LIFE 25.0

new amx_gasnades, amx_gasdmg, amx_gascheck, amx_gasradius, amx_smokegasp, amx_gasobeyFF, amx_gas_restore, amx_gas_maskon, amx_gas_mask_sap,amx_gas_mask_fade,amx_gas_maskon_max_fade
new mp_friendlyfire

new gmsgDamage, gmsgDeathMsg, gmsgScoreInfo

new Float:player_affected_time[33]
new Float:player_restored_time[33]
new Float:damage_took[33]
new bool:has_mask[33]
new bool:has_on[33]

new gMsgScreenFade

public plugin_precache()
{
engfunc(EngFunc_PrecacheSound, GASP_SOUND1)
engfunc(EngFunc_PrecacheSound, GASP_SOUND2)
engfunc(EngFunc_PrecacheSound, SAP_SOUND1)
engfunc(EngFunc_PrecacheSound, SAP_SOUND2)
}

public plugin_init()
{
register_plugin("Gas Grenades", VERSION, "ConnorMcLeod") // RichoDemus/AssKicR/T(+)rget for previous versions
register_event("HLTV", "eNewRound", "a", "1=0", "2=0")
register_forward(FM_EmitSound, "fwdEmitSound")
register_forward(FM_Touch, "fwdTouch")
register_forward(FM_Think, "fwdThink")
register_forward(FM_PlayerPreThink, "fwdPlayerPreThink")
register_event("DeathMsg", "player_death", "a")
register_event("Flashlight","event_flashlight","b");
register_event("ResetHUD", "ResetHUD", "abe")

register_clcmd("say /maska", "mask")

register_cvar("gasnade", VERSION, FCVAR_SERVER)

gMsgScreenFade = get_user_msgid("ScreenFade")
amx_gasnades = register_cvar("amx_gasnades", "1") // 0/1 Disable/Enable the whole plugin

amx_gasdmg = register_cvar("amx_gasdmg", "2") // How much damage the player takes every check cycle, 0 to disable damage (see amx_gascheck)
amx_gascheck = register_cvar("amx_gascheck", "2") // Check period in seconds
amx_gasradius = register_cvar("amx_gasradius", "180") // Smoke Radius (best is 170 - 230)
amx_smokegasp = register_cvar("amx_smokegasp", "1") // 0/1 Makes players gasp/cough in smoke
amx_gasobeyFF = register_cvar("amx_gasobeyFF", "0") // 0/1 Makes plugin act or not as cvar mp_friendlyfire
amx_gas_restore = register_cvar("amx_gas_restore", "1") // 0/1 Restore or not HP (if amx_gasdmg > 0)
amx_gas_maskon = register_cvar("amx_gas_maskon", "1")

amx_gas_mask_sap = register_cvar("amx_gas_maskon_sap", "1")
amx_gas_mask_fade = register_cvar("amx_gas_maskon_fade", "1")
amx_gas_maskon_max_fade = register_cvar("amx_gas_maskon_max_fade", "30")
}

public event_flashlight(id)
{
new on = read_data(1)
if(on==1)
{
has_on[id]=true
fade_mask(id,1)
}
else
{
has_on[id]=false
fade_mask(id,0)
}
}

public ResetHUD(id)
{
if(is_user_alive(id) && has_on[id])
{
fade_mask(id,1)
}
else
{
fade_mask(id,0)
}
}

public fade_mask(id,on)
{
if(get_pcvar_num(amx_gas_mask_fade)!=1) return

new x = get_pcvar_num(amx_gas_maskon_max_fade)
if(!on) x=0

message_begin(MSG_ONE,gMsgScreenFade,{0,0,0},id)
write_short( 1<<15 )
write_short( 1<<10 )
write_short( 1<<2 )
write_byte( 0 )
write_byte( 0 )
write_byte( 0 )
write_byte( x )
message_end()
mask(id)
}


public plugin_cfg()
{
mp_friendlyfire = get_cvar_pointer("mp_friendlyfire")

gmsgDamage = get_user_msgid("Damage")
gmsgDeathMsg = get_user_msgid("DeathMsg")
gmsgScoreInfo = get_user_msgid("ScoreInfo")
}
public mask(id)
{
if(!is_user_alive(id) && get_pcvar_num(amx_gas_maskon))
{
return PLUGIN_HANDLED
}
if(has_mask[id])
{
client_print(id, print_chat, "Zdjales maske")
has_mask[id] = false
return PLUGIN_HANDLED
}
if(is_user_alive(id) && get_pcvar_num(amx_gas_maskon) && !has_mask[id])
{
client_print(id, print_chat, "Zalozyles maske")
has_mask[id] = true
if(get_pcvar_num(amx_gas_mask_sap) && has_on[id])
{
new args[1]
args[0]=id
set_task(1.0,"sap_sound",args[0]+TASK_SAP,args,1)
}
}
}

public sap_sound(args[1])
{
new id = args[0]
if(is_user_alive(id) && has_on[id]) emit_sound(id,CHAN_BODY,"player/inhale.wav",0.5,ATTN_NORM,0,80)
//if(has_mask[id]) set_task(3.0,"sap_sound",args[0]+TASK_SAP,args,1)
set_task(1.0,"sap_sound2",args[0]+TASK_SAP,args,1)
}

public sap_sound2(args[1])
{
new id = args[0]
if(is_user_alive(id) && has_on[id]) emit_sound(id,CHAN_BODY,"player/exhale.wav",0.5,ATTN_NORM,0,80)
if(has_mask[id]) set_task(3.0,"sap_sound",args[0]+TASK_SAP,args,1)
}

public player_death()
{
new id = read_data(2)

has_mask[id] = false
has_on[id] = false
}


Jak byście potrzebowali resztę to piszcie wrzucę w załączniku bo jest ponad 200 linii. Prosiłbym o poprawienie kodu i naprawę w miare możliwości.
  • +
  • -
  • 0

#2 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 15.08.2011 16:30

 if(has_mask[id]) 
{
client_print(id, print_chat, "Zdjales maske")
has_mask[id] = false
return PLUGIN_HANDLED
}
if(is_user_alive(id) && get_pcvar_num(amx_gas_maskon) && !has_mask[id])

 if(has_mask[id]) 
{
client_print(id, print_chat, "Zdjales maske")
has_mask[id] = false
return PLUGIN_HANDLED
}
else if(is_user_alive(id) && get_pcvar_num(amx_gas_maskon) && !has_mask[id])

  • +
  • -
  • 0

#3 BoB0_

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 38
Życzliwy

  • Postów:365
  • GG:
  • Lokalizacja:Przemyśl
Offline

Napisano 15.08.2011 16:32

Myślisz że to coś zmieni w działaniu pluginu?
  • +
  • -
  • 0

#4 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 15.08.2011 16:34

Tak.
2. Warunek nie wykona się jeżeli 1. zostanie spełniony
  • +
  • -
  • 0

#5 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 15.08.2011 16:39

usun
set_task(1.0,"sap_sound2",args[0]+TASK_SAP,args,1)

//if(has_mask[id]) set_task(3.0,"sap_sound",args[0]+TASK_SAP,args,1)
na
if(has_mask[id]) set_task(3.0,"sap_sound2",args[0]+TASK_SAP,args,1)

if(has_mask[id]) 
  { 
        client_print(id, print_chat, "Zdjales maske")
        has_mask[id] = false
        return PLUGIN_HANDLED
  }
na
if(has_mask[id]) 
  { 
        client_print(id, print_chat, "Zdjales maske")
        has_mask[id] = false
        has_on[id] = false
        return PLUGIN_HANDLED
  }

A może sma?
nic to nie zmieni
w 1 warunku has_mask musi byc true a w drugim false zmienna nie może mięć tych dwóch wartości naraz więc wykonać się może tylko jeden z tych if'ow (jeśli reszta warunków też jest prawdziwa)
  • +
  • -
  • 3

#6 BoB0_

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 38
Życzliwy

  • Postów:365
  • GG:
  • Lokalizacja:Przemyśl
Offline

Napisano 15.08.2011 16:41

Aha, no tak. Nie pomyślałem.

Czy warning : function should return value "mask"

może coś znaczyć ważniejszego?
  • +
  • -
  • 0

#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 15.08.2011 16:43

w public mask przed ostatnim } dodaj
return PLUGIN_HANDLED;
chociaż i tak to nie ma wpływu na działanie pluginu
  • +
  • -
  • 1

#8 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 15.08.2011 16:56

Ahhh Dark masz rację... Przecież return jest w warunku
  • +
  • -
  • 0

#9 BoB0_

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 38
Życzliwy

  • Postów:365
  • GG:
  • Lokalizacja:Przemyśl
Offline

Napisano 15.08.2011 16:59

Mimo wszystko jest dalej problem.

Czasami zaraz po zrespieniu się pisze że maska założona mimo że latarka nie jest włączona. Potem gdy włączam latarkę pisze że maska zdjęta ale jak wejde w smoke to nie zadaje obrażeń a dźwięki nie są odtwarzane. Jak ją ponownie ściągne to pisze że została założona itd. Gdy pisze że jest założona dźwięki też się nie odtwarzają.

Użytkownik BoB0_ edytował ten post 15.08.2011 17:00

  • +
  • -
  • 0

#10 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 15.08.2011 17:05

troche ten plugin według mnie dziwnie działa masz zakładać maske za pomoca komendy /maska włączać ją za pomocą latarki ?
  • +
  • -
  • 0

#11 BoB0_

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 38
Życzliwy

  • Postów:365
  • GG:
  • Lokalizacja:Przemyśl
Offline

Napisano 15.08.2011 17:10

hmmm.

Komenda /maska została bo jej nie usunąłem. Przez nią tylko zakłada maskę a jak włączamy przez latarkę to dodatkowo zostaje ściemniony obraz. To jest akurat najmniejszy problem. Tak jak pisałem wyżej na początku rundy czasami sama się zakłada maska. Ale nic to nie daje. Po tym plugin się buguje ;/

@edit.

Wszystko działa prawie dobrze. Chcę tylko wyeliminować błąd że na początku rundy plugin źle czyta czy maska jest założona i czasami jak się ją zakłada to pisze że jest ściągnięta przy tym obraz jest ściemniony i smoke nie zabiera dmg ale dźwięki się nie odtwarzają. Oto kod:

Spoiler

Użytkownik BoB0_ edytował ten post 22.08.2011 17:06

  • +
  • -
  • 0




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

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