Sie sind nicht angemeldet.

1

Donnerstag, 22. Oktober 2009, 10:23

Ich bräuchte Hilfe bei meinem kleinen Plugin!!

Hallo Zusammen!

Ich habe ein kleine Plugin geschrieben bzw. ichhabe es versucht.

Kurze Beschreibung was das Plugin machen soll:
Es schaut wieviele Spieler auf dem Server sind. Wenn die Anzahl x unterschritten wir, soll er eine vordefinierte Map automatusche setzen und so lange laufen lassen. Wenn die Anzahl x an Spieler wiedererfüllt ist soll der normale Mapcycle weiterlaufen . (Bots werden nicht mit dazu gezählt).

Hier ist der Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#pragma semicolon 1
#include <sourcemod>

#define PLUGIN_VERSION "0.1"
new String:g_SaveNextMap[128];
new Handle:g_Switch;
new handle:g_Map = INVALID_HANDLE;
new Handle:g_MinPlayer = INVALID_HANDLE;
public Plugin:myinfo =
{
	name = "Empty Server",
	author = "Erblast",
	description = "",
	version = PLUGIN_VERSION,
	url = "www.sourcemod.net"
}
public OnMapStart()
{

   	GetNextMap(g_SaveNextMap, sizeof(g_SaveNextMap));
}

public OnPluginStart()
{
         CreateConVar("Empty_Server_version", PLUGIN_VERSION, "Empty_Server_version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
	g_Switch = CreateConVar("sm_empty_server","1","1 turns plugin on 0 is off",FCVAR_NOTIFY);
	g_Map = CreateConVar("sm_empty_Map", "de_dust2", "Welche Map soll laufen?",FCVAR_NOTIFY);
 	g_MinPlayer = CreateConVar("sm_empty_minplayer", "4", "Ab wievielen Spieler soll die Map laufen?", 4, true, 0.0, true, 10.0);
         HookEvent("round_end", Event_RoundEnd);
         AutoExecConfig(true,"EmptyServer");
}

public Event_RoundEnd (Handle:event, const String:name[], bool:dontBroadcast)
{
	if(GetConVarInt(g_Switch)==1)
	{
		new count = 0;
		for (new i = 1; i <= MaxClients; i++)
		if (IsClientInGame(i) && IsClientConnected(i) && !IsFakeClient(i))
                 {
                 	count++;
                 }

                 if (count <= GetConVarInt(g_MinPlayer))
		{
                         decl String:g_temp[128];
                         GetConVarString(g_Map, g_temp, sizeof(g_temp));
                         SetNextMap(g_temp);
        		}
                 else if (count > GetConVarInt(g_MinPlayer))
                 {
                 	SetNextMap(g_SaveNextMap);
                 }
	}
}


Wenn ich es compiliere bekomme ich Warnungen.
Siehe hier:

Quellcode

1
2
3
4
5
6
sm_empty_server.sp(7) : warning 213: tag mismatch
sm_empty_server.sp(26) : warning 217: loose indentation
sm_empty_server.sp(27) : warning 213: tag mismatch
sm_empty_server.sp(29) : warning 217: loose indentation
sm_empty_server.sp(44) : warning 217: loose indentation
sm_empty_server.sp(47) : warning 213: tag mismatch


Ich habe zwei Probleme zu einem wird gleich dem dem Mapwechsel immer die Map gesetzt wobei er es ja eigentlich ja noch dem Rundenende machen sollte und er geht dann die Spieleranzahl x erfüllt ist nicht weiter im normalen Mapcycle.
Kann mir jemand helfen? und wie bekomme ich die Warnings weg?

Danke schon mal im vorraus!

Gruß
Erblast

MadMakz

Super Moderator

Beiträge: 1 878

Wohnort: ~#

Rootserver vorhanden: Ja

  • Nachricht senden

2

Donnerstag, 22. Oktober 2009, 16:02

Re: Ich bräuchte Hilfe bei meinem kleinen Plugin!!

erstmal, so ein plugin gibt es bereits, siehe http://forums.alliedmods.net/showthread.php?t=65281">http://forums.alliedmods.net/showthread.php?t=65281</a>

zu "loose indentation": fehler können erstmal ignoriert werden da diese nur anzeig das das formating/aufteilung zu vorigen/gleichen codeparts nicht stimmt (z.b. "absätze" & leerzeichen), diese behindern das/ein plugin nicht in der funktionsweise.

zu "tag mismatch": siehe hier http://wiki.alliedmods.net/Introduction_to_SourcePawn#Declaration">http://wiki.alliedmods.net/Introduction ... eclaration</a>
tip; du hast zb. den code den ich zu deiner "get map" frage geposted hast nicht richtig übernommen

MfG

Makz

3

Freitag, 23. Oktober 2009, 09:18

Re: Ich bräuchte Hilfe bei meinem kleinen Plugin!!

Danke für deine Antwort!

Quellcode

1
2
3
4
5
public OnMapStart()
{
   decl String:g_SaveNextMap[128]
   GetNextMap(g_SaveNextMap, sizeof(g_SaveNextMap))
}


Die String Variable ist doch nur in der OnMapStart() deklariert und nicht Global, oder verstehe ich das falsch?