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

Widelec dla losowego gracza


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

#1 ciemny

    Pomocny

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:47
  • Lokalizacja:Wronki, Polska
Offline

Napisano 12.09.2009 10:44

Witam,
mam problem z działaniem pluginu który ma dawać po kolei (co rundę innemu) wszystkim TT widelec, którym można zabić CT jednym uderzeniem.
Mam już coś takiego:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike> 
#include <fakemeta>
#include <Hamsandwich>

#define PLUGIN "Losowy Widelec"
#define VERSION "1.0"
#define AUTHOR "Ciemny"

new gracz = 33
new byl[33]
new static models[][] = { "models/p_bknuckles.mdl", "models/v_widelec.mdl", "models/p_bknuckles.mdl", "models/v_bknuckles.mdl" }


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	RegisterHam(Ham_Spawn, "player", "client_spawn", 1)
	

}
public client_spawn(id)

{
	new wybrany
	 
	
	set_pev(gracz, pev_viewmodel2, models[3])
	set_pev(gracz, pev_weaponmodel2, models[2])
	gracz = 33
	for (new i = 1;wybrany!=1;i++)
	{
		if (is_user_alive(i) == 1 && cs_get_user_team(i) == CS_TEAM_T && byl[i] != 1)
		{
			gracz = i
			client_print(gracz,print_chat,"Otrzymales od nieznajomego paczke z widelcem, ktorym mozesz zabic klawisza jednym ciosem!")
			set_pev(gracz, pev_viewmodel2, models[1])
			set_pev(gracz, pev_weaponmodel2, models[0])
			wybrany = 1
			byl[i] = 1
		}
		if (i > 33)
		{
			for (new j=0;j<33;j++)
			{
				byl[j] = 0
			}
		}
	}
	
	
	
}

public plugin_precache()
{
	static i
	for(i = 0; i < sizeof models; i++)
	{
		precache_model(models[i])
	}	

}
Gdy ktoś próbuje wejść na serwer ten się wyłącza, podejrzewam że może chodzić o zapętloną pętlę (wywołującą się w nieskończoność) ale głowy nie dam.

Ps. Wiem, że nie ma tam jeszcze części odpowiedzialnej za natychmiastowe zabijanie, ale to dlatego że na razie nie mam na nią pomysłu :P
  • +
  • -
  • 0

#2 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 12.09.2009 11:10

sizeof models

zmien na liczbe moze...

Blad jest raczej w precache bo tylko ona jest uruchamiana w czasie ktory opisujesz crash...
  • +
  • -
  • 0

#3 ciemny

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:47
  • Lokalizacja:Wronki, Polska
Offline

Napisano 12.09.2009 11:17

Niestety nadal to samo
  • +
  • -
  • 0

#4 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 12.09.2009 12:20

for (new i = 1;wybrany!=1;i++)

+

if (is_user_alive(i) == 1 && cs_get_user_team(i) == CS_TEAM_T && byl[i] != 1)

jeżeli gracz nie żyje lub nie jest w CT lub byl[i] == 0 to będzie w nieskończoność wykonywało się - zmień to
  • +
  • -
  • 0

#5 ciemny

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:47
  • Lokalizacja:Wronki, Polska
Offline

Napisano 12.09.2009 13:00

Zmodyfikowałem kod w ten sposób:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike> 
#include <fakemeta>
#include <Hamsandwich>

#define PLUGIN "Losowy Widelec"
#define VERSION "1.0"
#define AUTHOR "Ciemny"

new gracz = 33
new byl[33]
new static models[][] = { "models/p_bknuckles.mdl", "models/v_widelec.mdl", "models/p_bknuckles.mdl", "models/v_bknuckles.mdl" }


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	RegisterHam(Ham_Spawn, "player", "client_spawn", 1)
	register_event("HLTV", "Event_FreezeTime", "a", "1=0", "2=0")
	

}
public client_spawn(id)

{
	new wybrany
	new ilett = 0
	for (new a=1;a<33;a++)
	{
		if (cs_get_user_team(a) == CS_TEAM_T)
		{
			a++
		}
	}
	if (ilett !=0)
	{
		for (new i = 1;wybrany!=1;i++)
		{
			if (is_user_alive(i) == 1 && cs_get_user_team(i) == CS_TEAM_T && byl[i] != 1)
			{
				client_print(0,print_chat,"wywolanie %d", i)
				gracz = i
				client_print(gracz,print_chat,"Otrzymales od nieznajomego paczke z widelcem, ktorym mozesz zabic klawisza jednym ciosem!")
				set_pev(gracz, pev_viewmodel2, models[1])
				set_pev(gracz, pev_weaponmodel2, models[0])
				wybrany = 1
				byl[i] = 1
			}
			if (i > 33)
			{
				for (new j=0;j<33;j++)
				{
					byl[j] = 0
				}
				i=1
			}
		}
	}else{
		client_print(0,print_chat,"Nie znaleziono terro")
	}
		
	
	
	
}

public plugin_precache()
{
	static i
	for(i = 0; i < 3; i++)
	{
		precache_model(models[i])
	}	

}
Wprawdzie serwer już się uruchamia ale nadal nic się nie dzieje, żadnych śladów uruchomienia pluginu.
  • +
  • -
  • 0

#6 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 12.09.2009 13:21

powiedz na jakiej zasadzie ma być przydzielany widelec.
w każdej rundzie inna osoba ? co jaki czas może znów go dostać ?
  • +
  • -
  • 0

#7 ciemny

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:47
  • Lokalizacja:Wronki, Polska
Offline

Napisano 12.09.2009 13:30

Najlepiej w każdej rundzie inna osoba, no ale jak skończą się dostępne osoby to oczywiście gracz może dostać go ponownie.
  • +
  • -
  • 0

#8 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 13.09.2009 12:50

new mial[33] // zmienna globalna

public client_connect(id)
{
   mial[id]=0
}

public losuj()
{
   new num,p[32]
   get_players(p,num,"ach")
   
   new x=0
   for(int i=0;i<6;i++)
   {
       x = random_num ( 0,num-1 )
       if(mial[p[x]] == 1) continue
       mial[p[x]] = 1
       return p[x]
    }

    for(x=0;x<num;x++)
    {
         if(mial[p[x]] == 1) continue
         mial[p[x]] = 1
         return p[x]
     }

     for(x=0;x<33;x++) mial[x]=0
     x = random_num ( 0,num-1 )
     mial[p[x]] = 1
     return p[x]
}

Funkcja losujaca zwraca ID gracza, dac w dobre miejsce i powinno dzialac.

Proponuje dac sekunde po rozpoczeciu rundy.
  • +
  • -
  • 0

#9 honey

    Wszechmogący

  • Zbanowany

Reputacja: 124
Zaawansowany

  • Postów:606
  • Steam:steam
  • Lokalizacja:n / a
Offline

Napisano 16.09.2009 23:23

Zlepiłby ktoś ten plugin w całość ? :) Tak, aby każda osoba w tt miała ten widelec. Losowo może być też on dawany :)




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

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