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
Nowy Plugin

Prośba o plugin który ożywia.

Nowy Plugin

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

#1 L0rdS^P0l4K

    Profesjonalista

  • Użytkownik

Reputacja: 117
Zaawansowany

  • Postów:197
  • GG:
  • Steam:steam
  • Imię:Denis
  • Lokalizacja:Tarnowskie Góry
Offline

Napisano 12.06.2009 09:54

Witam.
Jeżeli to możliwe proszę kogoś komu to nie sprawi wielkiej trudności o napisanie małego pluginu.
Miałby on za zadanie:

- Działać jedynie na mapie surf... albo poprzez cvar który będzie ustawiony na 0 a w prefix_surf.cfg będzie na 1 albo poprzez wykrycie prefixu mapy i samoistnym uaktywnieniu.
- Po wpisaniu przez osobę MARTWĄ na say /life ożywia tego gracza normalnie na respawnie.
- Daje możliwość wpisania /life co 10s

Wiem że podobne rzeczy są na deathmatch albo uSurf. Jednak rozchodzi mi się tylko o ten kawałek kodu.
Z góry dziękuję.
  • +
  • -
  • 0

#2 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 12.06.2009 10:46

Pisałem na szybko, nie testowałem, ale spróbuj ;)
#include <amxmodx>
#include <fun>

new byl_juz[33]

public plugin_init() 
{
	register_plugin("/life", "1.0", "amxx.pl")
	
	register_clcmd("say /life", "ozyw")
}

public ozyw(id)
{
	if( !is_user_alive(id) )
	{
		if( !byl_juz[id] )
		{
			spawn(id)
			spawn(id)
			byl_juz[id] = 1 
			set_task(10.0, "pozwol", id)
		} else
		{
			client_print(id, print_chat, "Mozesz uzyc komendy /life co 10s")
		}
	} else
	{
		client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes martwy")	
	}
}

public pozwol(id)
{
	byl_juz[id] = 0
}
Kompilator

I poczytaj to:
http://amxx.pl/topic... ... -vt477.htm
  • +
  • -
  • 0

#3 naXe

    Banned

  • Zbanowany

Reputacja: 269
Wszechwidzący

  • Postów:1 489
  • GG:
  • Steam:steam
  • Lokalizacja:Kwidzyn
Offline

Napisano 12.06.2009 11:43

A to nie to samo co: http://amxx.pl/viewtopic.php?t=10825 ?

#4 emblaze

    Koniec z cs/amxx

  • Użytkownik

Reputacja: 167
Profesjonalista

  • Postów:973
  • Lokalizacja:Mój steam: emblaze_95
Offline

Napisano 12.06.2009 11:46

naXe,

Daje możliwość wpisania /life co 10s

:>
  • +
  • -
  • 0

#5 L0rdS^P0l4K

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 117
Zaawansowany

  • Postów:197
  • GG:
  • Steam:steam
  • Imię:Denis
  • Lokalizacja:Tarnowskie Góry
Offline

Napisano 12.06.2009 15:09

Hello...
Wielkie dzięki... plugin działa... jednak i tak troszkę go przerobiłem bo admin_freelooka miałem i o dziwo 3 teamy grały... TT CT i SPEC... :-)
Teraz tylko TT i CT [death] mogą użyć funkcji. Jednak jest mały problem... (1) wcześniej jak i teraz występują takie błędy że gracz wpisuje w say /life i zamiast go zrespić. To gracz przechodzi na czyjąś kamerę normalnie dalej jakby był death a w ranku oraz na say jak coś pisze to pokazuje że jest żywy... Podam kod tego lekko zmodyfikowanego.

(2) Po zrespieniu się gracz często nie ma nawet noża... jeżeli można to proszę kogoś o danie choćby glocka i knife na start.
(3) Po którymś /life z rzędu zauważyłem że nie mam... celownika oraz napisów z kasą i hp i armorem... :/ da się to jakoś naprawić. ?

#include <amxmodx>
#include <cstrike>
#include <fun>

new byl_juz[33]

public plugin_init()
{
    register_plugin("/life", "1.0", "amxx.pl")
   
    register_clcmd("say /life", "ozyw")
}

public pozwol(id)
{
    byl_juz[id] = 0
}

public ozyw(id)
{
  if( cs_get_user_team(id) != CS_TEAM_SPECTATOR )
	{
		if( !is_user_alive(id) )
		{
			if( !byl_juz[id] )
			{
				spawn(id)
				spawn(id)
				byl_juz[id] = 1
				set_task(10.0, "pozwol", id)
			} else
			{
            client_print(id, print_chat, "Mozesz uzyc komendy /life co 10s")
			}
		} else
		{
        client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes martwy !")   
		}

	} else
	{
	client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes w CT lub TT !")
	}
}

A i dziękuje za ten temat z plugins-prefix.ini... od nie dawna zajmuję się tak na serio serwerem więc nie wszystko wiedziałem :-)
  • +
  • -
  • 0

#6 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 12.06.2009 15:24

Spróbuj tego:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike> 

new byl_juz[33]

public plugin_init() 
{
	register_plugin("/life", "1.0", "amxx.pl")
	
	register_clcmd("say /life", "ozyw")
}

public ozyw(id)
{
	if( cs_get_user_team(id) != CS_TEAM_SPECTATOR )
	{
		if( !is_user_alive(id) )
		{
			if( !byl_juz[id] )
			{
				ExecuteHamB(Ham_CS_RoundRespawn, id)
				ExecuteHamB(Ham_CS_RoundRespawn, id)
				byl_juz[id] = 1 
				set_task(10.0, "pozwol", id)
			} else
			{
				client_print(id, print_chat, "Mozesz uzyc komendy /life co 10s")
			}
		} else
		{
			client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes martwy")	
		}
	} else
	{
		client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes w CT lub TT !")
	}
}

public pozwol(id)
{
	byl_juz[id] = 0
}

Jeśli ta wersja dalej nie daje broni, pisz śmiało ;)
  • +
  • -
  • 0

#7 L0rdS^P0l4K

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 117
Zaawansowany

  • Postów:197
  • GG:
  • Steam:steam
  • Imię:Denis
  • Lokalizacja:Tarnowskie Góry
Offline

Napisano 12.06.2009 16:16

Owszem bronie są... jednak nadal zdarzają się te 2 błędy o których pisałem... tzn

-brak celownika i napisów HP ARMOR AMMO
oraz
-oglądasz kamerę kogoś... a pokazuje na say i w tabeli że gracz jest żywy... przez co nawet nie może powtórnie wpisac say /live

@down. Pobrałem ten kod niżej i puki co nikt się nie skarżył... przetestuje dokładnie i jak coś to napiszę. A teraz jeszcze raz dziękuję :-)
  • +
  • -
  • 0

#8 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 12.06.2009 18:09

Ok, mam jeszcze jedno wyjście ;)
Tym razem skorzystałem z http://amxx.pl/topic... ... vt3265.htm

Nie zalecane jest uzycie funkji zaraz po smierci (lepiej task np. 5s).

Żeby za bardzo nie rozwijać kodu zrobiłem tak, że zrespienie się następuje 5s po wpisaniu /life.
#include <amxmodx>
#include <fakemeta>
#include <cstrike> 

new byl_juz[33]

public plugin_init() 
{
	register_plugin("/life", "1.0", "amxx.pl")
	
	register_clcmd("say /life", "ozyw")
}

public ozyw(id)
{
	if( cs_get_user_team(id) != CS_TEAM_SPECTATOR )
	{
		if( !is_user_alive(id) )
		{
			if( !byl_juz[id] )
			{
				byl_juz[id] = 1 
				set_task(15.0, "pozwol", id)
				set_task(5.0, "respawn_player", id+40)
				client_print(id, print_chat, "Zrespisz się za 5s")
			} else
			{
				client_print(id, print_chat, "Mozesz uzyc komendy /life co 15s")
			}
		} else
		{
			client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes martwy")	
		}
	} else
	{
		client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes w CT lub TT !")
	}
}

public pozwol(id)
{
	byl_juz[id] = 0
}

public respawn_player(id)
{
	id = id - 40
	if (!is_user_connected(id) || is_user_alive(id) || cs_get_user_team(id) == CS_TEAM_SPECTATOR)         return;

	set_pev(id, pev_deadflag, DEAD_RESPAWNABLE)
	dllfunc(DLLFunc_Think, id)

	if (is_user_bot(id) && pev(id, pev_deadflag) == DEAD_RESPAWNABLE)
	{
		dllfunc(DLLFunc_Spawn, id)
	}
}

public client_disconnect(id)
{
	if(task_exists(id))
		remove_task(id)
		
	if(task_exists(id+40))
		remove_task(id+40)
}
Jakby nie było borni, pisz ;)
  • +
  • -
  • 0

#9 L0rdS^P0l4K

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 117
Zaawansowany

  • Postów:197
  • GG:
  • Steam:steam
  • Imię:Denis
  • Lokalizacja:Tarnowskie Góry
Offline

Napisano 13.06.2009 10:45

A jednak... znowu problem... o ile nie ma już przypadków o których pisałem wyżej...
Teraz jest coś takiego że osoba która doszła do teamu ileś tam sekund po rozpoczęciu rundy musi czekać aż ona się zakończy.
Tzn gość wchodzi na serwer w 5min trwania mapy... i komenda /live na niego nie działa... wprawdzie pisze ze zostanie zrespiony po 5s jednak nic się nie dzieje... dopiero po normalnym [naturalnym] zrespieniu się wynikniętym restartem rudny lub nową rundą funkcja obejmuje tego gracza.

Jest to dość uciążliwe zwłaszcza że na serwerze jest powiedzmy 20ludzi i nie sposób zakończyć szybko rundę gdy 17 osób się respi co 20 sekund.
W takiej sytuacji 3 osoby czekają te 10min aż szczęście dopisze i wszyscy wybiją się w jednym czasie.
  • +
  • -
  • 0

#10 L0rdS^P0l4K

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 117
Zaawansowany

  • Postów:197
  • GG:
  • Steam:steam
  • Imię:Denis
  • Lokalizacja:Tarnowskie Góry
Offline

Napisano 17.06.2009 10:26

Czy ktoś potrafi pomóc ?
  • +
  • -
  • 0

#11 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 17.06.2009 11:55

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

new byl_juz[33]

public plugin_init()
{
    register_plugin("/life", "1.0", "amxx.pl")
   
    register_clcmd("say /life", "ozyw")
}

public ozyw(id)
{
    if( cs_get_user_team(id) != CS_TEAM_SPECTATOR )
    {
        if( !is_user_alive(id) )
        {
            if( !byl_juz[id] )
            {
                byl_juz[id] = 1
                set_task(15.0, "pozwol", id)
                set_task(5.0, "respawn_player", id+40)
                client_print(id, print_chat, "Zrespisz się za 5s")
            } else
            {
                client_print(id, print_chat, "Mozesz uzyc komendy /life co 15s")
            }
        } else
        {
            client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes martwy")   
        }
    } else
    {
        client_print(id, print_chat, "Komendy /life mozesz uzyc tylko, gdy jestes w CT lub TT !")
    }
}

public pozwol(id)
{
    byl_juz[id] = 0
}

public respawn_player(id)
{
    id = id - 40
    if (!is_user_connected(id) || is_user_alive(id) || cs_get_user_team(id) == CS_TEAM_SPECTATOR)         return;
    set_pev(id, pev_deadflag, DEAD_RESPAWNABLE)
    dllfunc(DLLFunc_Think, id)

    
    if ( pev(id, pev_deadflag) == 2 || pev(id, pev_deadflag) == 3 )
    {
        dllfunc(DLLFunc_Spawn, id)
    }
}

public client_disconnect(id)
{
    if(task_exists(id))
        remove_task(id)
       
    if(task_exists(id+40))
        remove_task(id+40)
}
Śmiga, testowałem ;)
Ale jakby co, to pisz.
  • +
  • -
  • 0

#12 L0rdS^P0l4K

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 117
Zaawansowany

  • Postów:197
  • GG:
  • Steam:steam
  • Imię:Denis
  • Lokalizacja:Tarnowskie Góry
Offline

Napisano 17.06.2009 23:12

if ( pev(id, pev_deadflag) == 2 || pev(id, pev_deadflag) == 3 )
    {
        dllfunc(DLLFunc_Spawn, id)
    }

po spawnie a przed klamrą zamykającą tego ifa wrzuciłem jeszcze jednego który zależnie od Teamu daje graczowi glocka albo usp.

Teraz wszystko działa jak należy... leci kolejny pomógł. Dzięki za plugin.
Pozdrawiam
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: Nowy Plugin

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

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