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

[ROZWIĄZANE] Operacja przy przeładowaniuPytanie


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

#1 kfrds

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
  • Lokalizacja:Podkarpacie
Offline

Napisano 30.11.2011 00:42

Witam serdecznie. Mam krótkie pytanie.

Myślę, ściągam i sprawdzam różne pluginy i nie mogę dojść końca jak zrobić taką prostą funkcję, żeby przykładowo podczas przeładowania dowolnej broni przez gracza wykonana została jakaś komenda. Dla przykładu, podczas przeładowania wyświetlenie tekstu "Przeladowujesz", a po zakończeniu przeładowania "Przeladowanie ukonczone".
Poradziłby mi ktoś i ewentualnie podał jakiś taki przykład ?
  • +
  • -
  • 0

#2 Lelek

    Zaawansowany

  • Użytkownik

Reputacja: 22
Życzliwy

  • Postów:105
  • GG:
  • Imię:Adam
  • Lokalizacja:*
Offline

Napisano 01.12.2011 08:54

#include <amxmodx>
#include <engine>
#define START "...::: Przeladowujesz :::..."
#define STOP "...::: Przeladowanie ukonczone :::..."
new bool:przeladowanie[33] = false;
public plugin_init()
{
register_plugin("Przeladowywanie", "1.0", "lelek");
register_event("CurWeapon", "curweapon", "be");
}
public curweapon(id)
przeladowanie[id] = false;
public client_PreThink(id)
{
if(get_user_button(id) & IN_RELOAD && przeladowanie[id] == false)
{
start(id);
przeladowanie[id] = true;
}

return PLUGIN_CONTINUE;
}

public start(id)
{
new ammo, clip;
new weapon = get_user_weapon(id, clip, ammo);

if(ammo != 0)
{
switch(weapon)
{
case 1:
{
if(clip != 13)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}

}
case 3:
{
if(clip != 10)
{
set_task(2.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 7:
{
if(clip != 30)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 8:
{
if(clip != 30)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 10:
{
if(clip != 30)
{
set_task(5.0,"NapisKoniec",id)
NapisPoczatek(id);
return PLUGIN_HANDLED
}
}
case 11:
{
if(clip != 20)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 12:
{
if(clip != 25)
{
set_task(4.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 13:
{
if(clip != 30)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 14:
{
if(clip != 35)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 15:
{
if(clip != 25)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 16:
{
if(clip != 12)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 17:
{
if(clip != 20)
{
set_task(2.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 18:
{
if(clip != 10)
{
set_task(2.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 19:
{
if(clip != 30)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 20:
{
if(clip != 100)
{
set_task(5.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 22:
{
if(clip != 30)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 23:
{
if(clip != 30)
{
set_task(2.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 24:
{
if(clip != 20)
{
set_task(4.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 26:
{
if(clip != 7)
{
set_task(2.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 27:
{
if(clip != 30)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 28:
{
if(clip != 30)
{
set_task(2.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
case 30:
{
if(clip != 50)
{
set_task(3.0,"NapisKoniec",id);
NapisPoczatek(id);
return PLUGIN_HANDLED;
}
}
}
}

przeladowanie[id] = false;
return PLUGIN_CONTINUE;
}
public NapisPoczatek(id)
client_print(id, print_chat, "%s", START);

public NapisKoniec(id)
{
przeladowanie[id] = false;
client_print(id, print_chat, "%s", STOP);
}

Użytkownik Lelek919 edytował ten post 01.12.2011 08:58

  • +
  • -
  • 0

#3 kfrds

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
  • Lokalizacja:Podkarpacie
Offline

Napisano 01.12.2011 14:57

Rozumiem, a co w tym zmienić żeby ten tekst nie pokazywał się jedynie temu graczowi który przeładowuje ale ogólnie wszystkim na czacie?
  • +
  • -
  • 0

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 554
Godlike

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

Napisano 01.12.2011 16:10

ten kod wyżej jest tragiczny
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "DarkGL"

const NOCLIP_WPN_BS    = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
const SHOTGUNS_BS    = ((1<<CSW_M3)|(1<<CSW_XM1014))

// weapons offsets
const m_pPlayer               = 41
const m_iId                    = 43
const m_fInReload            = 54

const m_flNextAttack = 83

stock const Float:g_fDelay[CSW_P90+1] = {
	0.00, 2.70, 0.00, 2.00, 0.00, 0.55,   0.00, 3.15, 3.30, 0.00, 4.50, 
	2.70, 3.50, 3.35, 2.45, 3.30,   2.70, 2.20, 2.50, 2.63, 4.70, 
	0.55, 3.05, 2.12, 3.50, 0.00,   2.20, 3.00, 2.45, 0.00, 3.40
}
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	new szWeapon[17]
	for(new i = 1; i <= CSW_P90; i++)
	{
		if( get_weaponname(i, szWeapon, charsmax(szWeapon)) && RegisterHam(Ham_Item_Deploy,szWeapon,"weaponItemDeployPost",1) && !(NOCLIP_WPN_BS & (1<<i)))
		{		
			if( !(SHOTGUNS_BS & (1<<i)) )
			{
				RegisterHam(Ham_Weapon_Reload, szWeapon, "weaponReloadPost", 1)
				
			}
		}
	}
}

public weaponReloadPost(iEnt)
{    
	if( get_pdata_int(iEnt, m_fInReload, 4) )
	{		
		new id = get_pdata_cbase(iEnt, m_pPlayer, 4)
		new Float:fDelay = g_fDelay[get_pdata_int(iEnt, m_iId, 4)]
		
		remove_task(id);
		
		set_task(fDelay,"reloadEnd",id);
	}
}

public reloadEnd(id){
	if(!is_user_alive(id))	return PLUGIN_CONTINUE;
	
	//reload skonczony
	
	return PLUGIN_CONTINUE;
}


public weaponItemDeployPost(iEnt){
	remove_task(get_pdata_cbase(iEnt, m_pPlayer, 4));
}

  • +
  • -
  • 1

#5 kfrds

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
  • Lokalizacja:Podkarpacie
Offline

Napisano 05.12.2011 20:21

Wybaczcie że milczałem. DarkGL co to tego to mam krótkie pytanie:

 if( get_pdata_int(iEnt, m_fInReload, 4) )
        {               
                new id = get_pdata_cbase(iEnt, m_pPlayer, 4)
                new Float:fDelay = g_fDelay[get_pdata_int(iEnt, m_iId, 4)]
                
                remove_task(id);
                
                set_task(fDelay,"reloadEnd",id);
        }

Rozumiem, że w tej pętli przed set_taskiem mogę sobie dodać coś w stylu ShowSyncHudMsg i to będzie działało. Mam rację?
  • +
  • -
  • 0

#6 Lelek

    Zaawansowany

  • Użytkownik

Reputacja: 22
Życzliwy

  • Postów:105
  • GG:
  • Imię:Adam
  • Lokalizacja:*
Offline

Napisano 05.12.2011 23:57

Tam nie ma pętli.
  • +
  • -
  • 0

#7 kfrds

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
  • Lokalizacja:Podkarpacie
Offline

Napisano 06.12.2011 14:36

Oj Boże...

"Czy w tej instrukcji warunkowej przed komendą set_task wstawiając sobie np. ShowSyncHudMsg będzie wyświetlało komunikat gdy będzie przeładowanie?"

Liczyłem że się domyślisz o czym pisze. A więc będzie to działać czy nie będzie?

Nie mogę już edytować powyższego postu, ale zmiana planów.

Dałem sobie spokój z tym ShoSyncHudMsg, wziąłem kod lelka. Cóż nie działa jak należy bo komunikat pokazuje się gdy przeładowuję ręcznie broń ale można temat zamknąć.

Użytkownik kfrds edytował ten post 06.12.2011 13:50

  • +
  • -
  • 0

#8 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 06.12.2011 15:13

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

marwit-0.png


#9 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 554
Godlike

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

Napisano 06.12.2011 16:19

w tej instrukcji warunkowej przed komendą set_task wstawiając sobie np. ShowSyncHudMsg będzie wyświetlało komunikat gdy będzie przeładowanie?

tak
  • +
  • -
  • 0




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

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