←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Prosty plugin na zakończenie...

Locked

  • +
  • -
Kot-CSHH's Photo Kot-CSHH 02.07.2013

Czy mógłby mi ktoś krok po kroku wytłumaczyć jak zrobić prosty plugin, który po zakończeniu timeleftu np. ustawiał graviti na 9999, tak żeby wszyscy gracze zginęli? Może być również slay, chociaż z tą grawitacją lepiej by wyglądało.

Quote

  • +
  • -
xenos's Photo xenos 02.07.2013

/* Plugin generated by AMXX-Studio */

#include 


#define PLUGIN "plugins"
#define VERSION "1.0"
#define AUTHOR "xenos"



public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_logevent("Koniec_Rundy", 2, "1=Round_End")
	
}
 
public Koniec_Rundy()
for(new id = 1;id<=get_maxplayers ();id++)
if((is_user_connected(id))&&(is_user_alive(id)) )
user_silentkill(id)

Attached Files

Quote

  • +
  • -
Kot-CSHH's Photo Kot-CSHH 02.07.2013

Prosilem o wytlumaczenie, no ale ok... + leci

 

Xenos ten twój plugin nie zabija wszystkich graczy po timelefcie, tylko na zakończenie rundy, a ja chciałem po timelefcie. 


Edited by CoKeZeRo, 02.07.2013 20:16.
Quote

  • +
  • -
GwynBleidD's Photo GwynBleidD 02.07.2013

Proponuję najpierw ustawić na chwilę grawitację na ujemną i każdym graczem podskoczyć, aby się uniósł w powietrzu, następnie przestawić grawitację :)

Quote

  • +
  • -
Kot-CSHH's Photo Kot-CSHH 02.07.2013

Proponuję najpierw ustawić na chwilę grawitację na ujemną i każdym graczem podskoczyć, aby się uniósł w powietrzu, następnie przestawić grawitację :)

 

A umiałbyś zrobić taki plugin? Jeżeli tak to bardzo bym prosił  ;)

Quote

Daj buziaka's Photo Daj buziaka 02.07.2013

prosto taki pluginy zrobić. użyj po timelefcie set_task aby ustawił grawitacje ujemną ( tylko oblicz ile będzie leciał w górę ) np. 2-3 sekundy. A po użyciu set_task zrób normalną grawitację i gracze wszyscy zginą.
Quote

  • +
  • -
Kot-CSHH's Photo Kot-CSHH 02.07.2013

prosto taki pluginy zrobić. użyj po timelefcie set_task aby ustawił grawitacje ujemną ( tylko oblicz ile będzie leciał w górę ) np. 2-3 sekundy. A po użyciu set_task zrób normalną grawitację i gracze wszyscy zginą.

Aż tak nie ogarniam AMXX. Mogłbyś mi może wytłumaczyć krok po kroku?;d

Quote

  • +
  • -
Kot-CSHH's Photo Kot-CSHH 03.07.2013

@Refresh.

Quote

  • +
  • -
Kot-CSHH's Photo Kot-CSHH 06.07.2013

@Refresh... da radę ktoś wytłumaczyć jak to zrobić?;d

Quote

  • +
  • -
Filip1512's Photo Filip1512 06.07.2013

Nie mam pojęcia jak będzie wyglądać funkcja na ostatnią rundę, ale szkielet pluginy wyglądałby mniej więcej tak:

#include <amxmodx>
#include <fun>

#define PLUGIN "Ostatnia runda"
#define VERSION "1.0"
#define AUTHOR "Filip / `NN"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	
}



public funkcja(id){
	if(is_user_connected(id) && is_user_alive(id)){
		set_user_gravity(id, -1.0)
		set_task(2.0, "spadanie", id)
	}
}

public spadanie(id)
	set_user_gravity(id, 10.0)
Quote

  • +
  • -
BlackPerfum's Photo BlackPerfum 06.07.2013

Łap całość z opisem





#include <amxmodx>

public plugin_init()
{
	register_plugin("KillForTimeLeft", "Test", "BlackPerfum") // Rejestracja pluginu
	
	new timeleft = get_timeleft() // Tworzę zmienną "timeleft" i przypisuje jej czas w sekundach do końca mapy
	
	new Float:ftimeleft = float(timeleft) //Tworze zmienną typu float i przypisuje jej wartość zmiennej "timeleft" jako wartość zmiennoprzecinkową
	
	set_task(ftimeleft-0.5, "KillAllPlayers") // Ustawiam aby funkcja "KillAllPlayers" wykonała 0.5 sekundy przed końcem mapy
}

public KillAllPlayers()
{
	new Players[32],Num //Tworze dwie dodatkowe zmienne
	
	get_players(Players,Num) //Do zmiennej "Players" wkładam wszystkich graczy a do zmiennej "num" wkładam ilość graczy
	
	set_cvar_num("sv_gravity",-100) // Ustawiam grawitację taką aby gracz gdy podskoczy nie mógł spaść
	
	for(new i=0;i<Num;i++)	// Ustawiam pętlę "for" aby obróciła się tyle razy ile jest aktualnie ludzi na serwerze
	{ 
		new id=Players[i] // wyciągam id ze zmiennej Players
		if(!is_user_alive(id)) continue	// omijam gracz jeśli nie żyje
		console_cmd(id, "+jump"); // Podskakuje graczem
	}
	set_task(2.0,"SetGravity") // Ustawiam aby funkcja "SetGravity" wykonała się 1.5 sekundy po zakończonym czasie mapy
}
public SetGravity()
{
	set_cvar_num("sv_gravity",800) // Ustawiam standardową grawitację
}

To można skrócić do czegoś takiego





#include <amxmodx>
public plugin_init()
{
	register_plugin("KillForTimeLeft", "Test", "BlackPerfum") // Rejestracja pluginu
	set_task(float(get_timeleft())-0.5, "KillAllPlayers") // Ustawiam aby funkcja "KillAllPlayers" wykonała 0.5 sekundy przed końcem mapy
}
public KillAllPlayers()
{
	new Players[32],Num //Tworze dwie dodatkowe zmienne
	get_players(Players,Num) //Do zmiennej "Players" wkładam wszystkich graczy a do zmiennej "num" wkładam ilość graczy
	set_cvar_num("sv_gravity",-100) // Ustawiam grawitację taką aby gracz gdy podskoczy nie mógł spaść
	for(new i=0;i<Num;i++)	// Ustawiam pętlę "for" aby obróciła się tyle razy ile jest aktualnie ludzi na serwerze
	{ 
		if(!is_user_alive(Players[i])) continue	// omijam gracz jeśli nie żyje
		console_cmd(Players[i], "+jump"); // Podskakuje graczem
	}
	set_task(2.0,"SetGravity") // Ustawiam aby funkcja "SetGravity" wykonała się 1.5 sekundy po zakończonym czasie mapy
}
public SetGravity()	set_cvar_num("sv_gravity",800) // Ustawiam standardową grawitację

Dlaczego wprowadzam czas do funkcji "set_task" jako float?

Bo tylko liczby zmiennoprzecinkowe ona przyjmuje


Edited by BlackPerfum, 06.07.2013 22:32.
Quote

  • +
  • -
K!113r's Photo K!113r 07.07.2013

Jeżeli +jump to może i dasz -jump? Bo tak to raczej sobie potem nie poskaczą...

Quote

  • +
  • -
Filip1512's Photo Filip1512 07.07.2013

Jeżeli +jump to może i dasz -jump? Bo tak to raczej sobie potem nie poskaczą...

 

Poskakać poskaczą, tylko że za pierwszy kliknięciem nie zareaguje, ale fakt faktem ;)

Quote

  • +
  • -
BlackPerfum's Photo BlackPerfum 07.07.2013

Ale ja dałem samo +jump tylko po to aby gracz oderwał się od ziemi a ujemna grawitacja sama zrobi swoje. Potem po 2 sekundach ustawiana jest normalna grawitacja. Tu nie chodzi aby sobie skakali ;D

Quote

  • +
  • -
Filip1512's Photo Filip1512 07.07.2013

Ale ja dałem samo +jump tylko po to aby gracz oderwał się od ziemi a ujemna grawitacja sama zrobi swoje. Potem po 2 sekundach ustawiana jest normalna grawitacja. Tu nie chodzi aby sobie skakali ;D


+jump to jest coś takiego, jakbyś kliknął przycisk do skakania i go nie puścił, dlatego jeśli ktoś będzie chciał podskoczyć dopiero zadziała mu drugi skok, bo +jump będzie miał już aktywne, a -jump się zrobi przy pierwszym (nieudanym) skoku, dopiero później będzie mógł normalnie skakać.
Quote

  • +
  • -
K!113r's Photo K!113r 07.07.2013

No nie wiem czy tak za drugim razem będą mogli, ja zawsze jak wpisałem w konsole +jump to skakać mogłem dopiero po wpisaniu -jump.
Quote

  • +
  • -
Kot-CSHH's Photo Kot-CSHH 07.07.2013

Jakoś nie robi tego przy zakończeniu rundy no ale obejdę się bez tego :| można zamknąć.

Quote

Gość_21977_* 10.07.2013

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked