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

Jak poprawnie zrespawnowac gracza


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
10 odpowiedzi w tym temacie

#1 czudaczek

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:8
  • Lokalizacja:wieś
Offline

Napisano 31.07.2013 08:32

Witam, mam pytanie jak poprawnie zrespawnowac gracza ?

Wiele tematow o tym bylo i probowalem juz chyba wszelkimi sposobami przez moduł fun, ham, cs ... moze sa jeszcze jakies inne sposoby ktorych nie probowalem.

Problem polega na tym, ze gracz sie respawnuje w 80 % przypadkow, ale raz na jakis czas ten gracz sie zrespawnuje ale zapada sie pod ziemie ... tzn jego model zapada sie w ziemie.

Probowalem zabezpieczyc swojego mini dm komenda /respawn zeby w przypadku gdy gracz zginie na respie podczas respawnu, to sam mogl sie odrodzic.

 

Problem jednak polega na tym, ze wg amxmodx ten gracz nadal zyje, zniknal z mapy ale ma status alive.

Powylaczalem wszystkie pluginy i zostawilem tylko swojego mini dm wiec raczej nie gryzie sie z innymi pluginami, 

 

Mam takie wrazenie ze gracze, ktorzy sie dobrze respawnuja, spadaja z niewielkiej wysokosci na ziemie a ci ktorzy zle, jakby od razu respawnowali sie w ziemi...

 

Zastanawialem sie czy problem nie tkwi w czasie w jakim respawnuje gracza po smierci ale regulowalem go od 0.5 do 1.5 sekundy i dalej to samo

 

public client_putinserver(id)
{
set_task(2.0, "CheckTeam", id+291,_,_,"b");
}
 
public DeathMsg()
{
        new victim=read_data(2);
        set_task(1.5, "respawn_player", victim)
}
 
 
public pfn_keyvalue(entid) {
 
new classname[20], key[18], value[3]
copy_keyvalue(classname, charsmax(classname), key, charsmax(key), value, charsmax(value))
 
if (equal( classname, "info_map_parameters" ) && equal( key, "buying" ) && equal( value, "0" )) buying_on=true
 
if (equal( classname, "game_player_equip") && (containi(key,"weapon_")!=-1)) taking_mapweapon=true
 
}
 
public respawn_player(id)
{
if(is_user_connected(id) && !is_user_alive(id))
{
dllfunc(DLLFunc_Spawn, id)
set_task(1.2, "daj_bronie" ,id)
}
}
 
public daj_bronie(id)
{
if(is_user_alive(id))
{
give_item(id, "item_suit")
//give_item(id, "weapon_knife")
}
}

 

Moze problemem jest wykrywanie smierci gracza przez ten event ?,  bo cialo jeszcze nie spadnie na ziemie po smierci a ja juz gracza respawnuje, moze powinienem usuwac cialo gracza zanim go odrodze ?


  • +
  • -
  • 0

#2 Ogen Dogen

    Czempion

  • Power User

Reputacja: 261
Wszechwidzący

  • Postów:837
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 31.07.2013 15:57

Jeśli to ma być DM i gracze mają się respić cały czas to możesz po prostu na początku pluginu zrobić taska , który co kilka sekund będzie sprawdzał czy jakiś jest martwy i wtedy go spawnujesz. Dodatkowo polecenie spawnu (w obojętnie jakiej bibliotece) trzeba wpisać 2 razy , czyli np.

if (!is_user_alive(id))
{
   spawn(id);
   spawn(id);
}

A jeszcze lepiej zrobić przerwę między nimi kolejny taskiem np. na sekundę.

Też miałem pobodny problem z DeathMsg , a bardzo nie będzie obciążony serwer.


Użytkownik Ogen Dogen edytował ten post 31.07.2013 15:58

  • +
  • -
  • 0

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 


#3 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

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

Napisano 31.07.2013 16:17


#include < amxmodx >
#include < hamsandwich >

public plugin_init( ) {
    RegisterHam( Ham_Spawn, "player", "hamPlayerSpawnPost", 1 );
    RegisterHam( Ham_Killed, "player", "hamPlayerKilledPost", 1 );
}

public hamPlayerSpawnPost( id ) {
    // TODO: Give Weapons
}

public hamPlayerKilledPost( iThis, iAttacker, iShouldgibs )
    set_task( 1.5, "playerRespawn", iThis );

public playerRespawn( id )
    return ExecuteHamB( Ham_CS_RoundRespawn, id );

Użytkownik MarWit edytował ten post 31.07.2013 16:18

  • +
  • -
  • 0

marwit-0.png


#4 czudaczek

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:8
  • Lokalizacja:wieś
Offline

Napisano 31.07.2013 23:16

MarWit, dzięki za odpowiedz, twoj kod wydaje sie bardzo interesujacy, szczegolnie zaciekawil mnie parametr iShoulddgibs, 

czyzby dzięki niemu mozna bylo usunac od razu spadajace cialo ?

 

Czytalem kiedys ze respawnowanie przez modul hamsandwich jest w jakis sposob zbugowane, ale juz nie pamietam dlaczego. 

Jakby ktos mial jeszcze jakies ciekawe propozycje to chetnie przeczytam, dam odpowiedz na weekendzie czy udalo mi sie osiagnac to czego potrzebuje,  kiedy to będę mial czas posiedziec przy kompie chwileczke dluzej.

 


  • +
  • -
  • 0

#5 Engi

    [EKSiD] playaz44

  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 31.07.2013 23:24

Z dokumentacji set_task'a:
 
public plugin_init(){
	RegisterHam(Ham_Killed, "player", "HamKilledPost", 1); // rejestruje zabicie gracza
}
 
public HamKilledPost(victim){ // wykonuje się po zabiciu gracza o identyfikatorze victim
	new data[1]; // tworzymy tablicę do przesłania dodatkowego parametru
	data[0]=victim; // wpisujemy jedyny dodatkowy parametr, identyfikator zabitego gracza, do tablicy
	set_task(3.0, "ressurect", .parameter=data, .len=1); // wywołamy funkcję ressurect po 3 sekundach
}
 
public ressurect(data[]){
	new victim=data[0]; // pobieramy identyfikator zabitego gracza z tablicy parameter
	if(is_user_connected(victim) && !is_user_alive(victim)){ // sprawdzamy, czy gracz dalej jest na serwerze i czy dalej nie żyje
		ExecuteHamB(Ham_CS_RoundRespawn, victim); // respawnujemy gracza po 3 sekundach od jego śmierci
	}
}
//zapomniałem dodać, używam tego w perku do cod moda nowego i nie zdarzyło mi się żaby ktoś utknął w ziemi/umarł przy respawnie

Użytkownik playaz44 edytował ten post 31.07.2013 23:28

  • +
  • -
  • 1
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#6 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

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

Napisano 31.07.2013 23:38

szczegolnie zaciekawil mnie parametr iShoulddgibs, 
czyzby Dzięki niemu mozna bylo usunac od razu spadajace cialo ?

Trzeci parametr Ham_Killed ( iShouldgibs ) odpowiada za rozpadanie się ciała podczas śmierci.

Czytalem kiedys ze respawnowanie przez modul hamsandwich jest w jakis sposob zbugowane, ale juz nie pamietam dlaczego.

To chyba jakaś bardzo wczesna wersja kanapki, chodź prędzej chodzi ci o respawn przy pomocy fun'a.
  • +
  • -
  • 0

marwit-0.png


#7 czudaczek

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:8
  • Lokalizacja:wieś
Offline

Napisano 01.08.2013 21:57

Nie wiem czy sa jakies ograniczenia na postrzelaj.pl ( serwer mam we francji) ale probowalem uruchomic cos z tymi kodami hamsandwich, a nawet gotowe pluginy hiroshimy i huberta gdzie wykorzystywano ten modul ale za cholere nie moge zrespawnowac tym gracza.

Ten sam problem mialem gdy probowalem uruchomic diablo moda od dargl.

Nie wie ktos moze czy do pluginów z uzyciem hamsandwich trzeba cos dodatkowo doinstalowac na serwerze ?

Juz probowalem nawet wgrywac najnowsza aktualizacje hamsandwich 1.4 czy jakos tak z marca tego roku ale ni cholery mi to nie smiga.


  • +
  • -
  • 0

#8 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

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

Napisano 01.08.2013 22:09

Moduł włączony?
  • +
  • -
  • 0

DarkGL to mój autorytet.

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


#9 czudaczek

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:8
  • Lokalizacja:wieś
Offline

Napisano 02.08.2013 19:39

No wlasnie o to chodzi ze wlaczony, nie probowalem jeszcze z amxmodx 1.81 tylko 1.82 i 1.83 beta, nie wiem czy to moze byc powodem ? ale diablo od darkgl probowalem uruchomic chyba nawet na 1.81

Dziwne zeby taki prosty niby plugin sprawial tyle problemow. Moze powinienem do hostingu postrzelaj napisac?

Tylko na jaka przyczyne wskazac? zero bledow w logach, zwyczajnie nie restartuje mnie ani botow, dodawalem wczesniej jakiegos fixa zeby hamsandwich dzialal na boty, jakos trzeba bylo je rejestrowac ale w sumie na mnie ten respawn powinien dzialac a normalnie gine i czekam na nowa runde.


  • +
  • -
  • 0

#10 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 03.08.2013 07:51

Jest jeszcze taki sposób na spawn, za index podajesz id gracza.

set_pev(index, pev_deadflag, DEAD_RESPAWNABLE);

dllfunc(DLLFunc_Think, index);

dllfunc(DLLFunc_Spawn, index);

Co do problemu z HamSandwich na tej paczce wszystko powinno działać, bo sam ją wiele razy instalowałem i nie było problemów:

http://amxx.pl/topic...etamod-amxmodx/  (1.8.1)


Użytkownik HubertTM edytował ten post 03.08.2013 07:52

  • +
  • -
  • 1

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#11 czudaczek

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:8
  • Lokalizacja:wieś
Offline

Napisano 04.08.2013 09:07

dzięki wszystkim za pomoc. Chyba serwer się źle zainstalował albo naprawili to ludzie z hostingu bo zrobiłem reinstall i wygrałem amxmodx 1.81 i śmiga. Przed reinstallem też go wygrywalem ale nie dawało to efektu
  • +
  • -
  • 0




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

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