Wird es nicht angezeigt, oder stimmt der Text nicht, oder stürzt das Spiel ab, oder was passiert? Ich kann dir nicht sagen was falsch ist, wenn du mir nicht sagst, was der Fehler ist (nicht der Fehler im Code, sondern den Fehler im Spiel, also die Auswirkung).
Theoretisch kann es ja alles mögliche sein, daher musst du das Problem erst mal schildern.
Beiträge von Jeffry
-
-
if(!IsNumeric(inputtext) || !strlen(inputtext)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nur Zahlen!");
new pID = strval(inputtext);
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Spieler nicht online!"); -
Wenn du mir sagst was daran nicht geht, natürlich

-
Das kannst du dann so machen, angenommen, dass das neue DM die ID 7 hat (das letzte in der Reihe hatte ja 6).
public OnPlayerSpawn(playerid)
{
//Wenn du 7 DMs hast, dann >muss< bei "Dm" eine 8 (oder höher) rein:
new String[128],Dm[8]; //<- Hier
for(new i = 0; MAX_PLAYERS > i; i++)
{
if(IsPlayerConnected(i) && DM[i] >= 0)
{
Dm[DM[i]]++;
}
}
SetPlayerSkin(playerid,PlayerInfo[playerid][pSkin]);
format(String,sizeof(String),"/DEAGLE: %d - /DM: %d - /Test Arena: %d - /SNIPER: %d - /TEAMDM: %d - /INSEL: %d - /NEU %d - KEIN MODUS: %d",Dm[1],Dm[2],Dm[3],Dm[4],Dm[5],Dm[6],Dm[7],Dm[0]);
TextDrawSetString(Textdraw[3],String);
if(DM[playerid] == 0)
{
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
}
else if(DM[playerid] == 1)
{
new rand = random(4);
SetPlayerInterior(playerid,1);
GivePlayerWeapon(playerid,24,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 2)
{
new rand = 4+random(4);
SetPlayerInterior(playerid,10);
GivePlayerWeapon(playerid,24,500);
GivePlayerWeapon(playerid,25,500);
GivePlayerWeapon(playerid,34,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 3)
{
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,500);
SetPlayerPos(playerid,-2223.0037,1217.4150,87.2109);
SetPlayerFacingAngle(playerid,0);
for(new i = 0; 4 > i;i++)
{
if(one[playerid][i] == 1)
{
SetPlayerVirtualWorld(playerid,i+1);
}
}
}
else if(DM[playerid] == 5)
{
new rand = 12+random(6);
SetPlayerInterior(playerid,3);
GivePlayerWeapon(playerid,24,1337);
GivePlayerWeapon(playerid,25,1337);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 4)
{
new rand = 8+random(4);
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,34,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 6)
{
new rand = 18+random(4);
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,250);
GivePlayerWeapon(playerid,25,250);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 7) //Angenommen das neue DM hat die Nummer 7
{
new rand = 22+random(4); //Im Array, Position 23 bis 26 (entsprechend Array-Index 22 - 25)
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,16,250);
GivePlayerWeapon(playerid,17,250);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
return 1;
}Und:
new RandomSpawn[][rpos] = {
//Deagle Arena
{2170.1455,1619.1500,999.9766,268.7325},
{2173.8379,1578.2926,999.9676,355.0020},
{2206.3252,1551.2097,1008.0002,275.0152},
{2197.7476,1611.7670,999.9689,270.7063},
//Deathmatch Arena
{-973.5314,1098.0420,1344.9725,152.0461},
{-1069.3160,1094.3376,1343.0927,114.9785},
{-1134.2878,1020.9984,1345.7385,331.2432},
{-1032.9974,1082.2256,1343.1140,253.8179},
//Sniper Arena
{2258.8872,1013.1470,79.5547,40.021},
{2319.2756,1112.1581,79.5546,107.0825},
{2240.9902,1152.4130,79.5547,204.9767},
{2184.8640,1044.0034,79.5547,270.9966},
//teamdm Arena
{362.0883,184.5245,1008.3828,179.6812},
{370.6522,185.8935,1014.1797,194.5972},
{367.1571,158.4084,1014.1875,14.6715},
{365.9490,158.6305,1019.9844,57.1881},
{371.4884,172.9320,1019.9844,31.9283},
{355.1946,188.9884,1019.9844,276.3385},
//insel Arena
{-2472.5017,1928.1299,1.8585,230.6389},
{-2476.0938,1860.8207,3.1238,313.5476},
{-2406.3843,1856.7988,2.7644,39.0885},
{-2404.9927,1933.2521,2.8361,136.2540},
//NEU
{-2472.5017,1928.1299,1.8585,230.6389},
{-2476.0938,1860.8207,3.1238,313.5476},
{-2406.3843,1856.7988,2.7644,39.0885},
{-2404.9927,1933.2521,2.8361,136.2540} //Nur die letzte Zeile im ganzen Array hat kein Komma!
};Die Koordinaten im Array unter NEU musst du natürlich entsprechend zu den Koordinaten in der NEU-Area ändern.
-
Installiere dir mal (bis auf das MySQL Plugin) diese Sachen hier: [SERVER][ WINDOWS ] Probleme beim Server Start
Vor allem das MSVC. -
Poste bitte den Server Log, wenn du das crashdetect Plugin eingefügt hast.
Das crashdetect Plugin musst du im Plugins Ordner einfügen, und in der server.cfg unter plugins eintragen. -
Zeile 4 im Quellcode aus Post 15.
-
Unter den Includes:
new race[MAX_PLAYERS]; -
Genau.
Aber das hier musst du weg machen:
DM[playerid] = 0;
Sonst setzt du es erst auf 1 und direkt wieder auf 0. -
public FindPlayer(playerid, pID)
{
new Float:Pos[3];
GetPlayerPos(pID, Pos[0], Pos[1], Pos[2]);
SetPlayerCheckpoint(playerid, Pos[0], Pos[1], Pos[2], 2);
return 1;
} -
Dann kannst du es auch so machen:
public OnPlayerSpawn(playerid)
{
new String[128],Dm[9];
for(new i = 0; MAX_PLAYERS > i; i++)
{
if(IsPlayerConnected(i) && DM[i] >= 0)
{
Dm[DM[i]]++;
}
}
SetPlayerSkin(playerid,PlayerInfo[playerid][pSkin]);
format(String,sizeof(String),"/DEAGLE: %d - /DM: %d - /1O1: %d - /Test Arena: %d - /SNIPER: %d - /TEAMDM: %d - /INSEL: %d - KEIN MODUS: %d",Dm[1],Dm[2],Dm[3],Dm[4],Dm[5],Dm[6],Dm[7],Dm[0]);
TextDrawSetString(Textdraw[3],String);
if(DM[playerid] == 0)
{
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
}
else if(DM[playerid] == 1)
{
new rand = random(4);
SetPlayerInterior(playerid,1);
GivePlayerWeapon(playerid,24,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 2)
{
new rand = 4+random(4);
SetPlayerInterior(playerid,10);
GivePlayerWeapon(playerid,24,500);
GivePlayerWeapon(playerid,25,500);
GivePlayerWeapon(playerid,34,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 3)
{
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,500);
SetPlayerPos(playerid,-2223.0037,1217.4150,87.2109);
SetPlayerFacingAngle(playerid,0);
for(new i = 0; 4 > i;i++)
{
if(one[playerid][i] == 1)
{
SetPlayerVirtualWorld(playerid,i+1);
}
}
}
else if(DM[playerid] == 5)
{
new rand = 12+random(6);
SetPlayerInterior(playerid,3);
GivePlayerWeapon(playerid,24,1337);
GivePlayerWeapon(playerid,25,1337);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 4)
{
new rand = 8+random(4);
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,34,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 6)
{
new rand = 18+random(4);
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,250);
GivePlayerWeapon(playerid,25,250);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
return 1;
} -
SetTimerEx("FindPlayer",1000,true,"u",playerid);
zu:
findTimer[playerid] = SetTimerEx("FindPlayer",1000,true,"dd",playerid, pID);Und:
forward FindPlayer(playerid, pID);
public FindPlayer(playerid, pID)
{
return 1;
}Dann kannst du direkt in diesem public den Checkpoint neu setzen.
Unter den Includes:
new findTimer[MAX_PLAYERS] = {-1,...}; //Setzt alle Werte auf -1So kannst du dann über
KillTimer(findTimer[playerid]);
findTimer[playerid] = -1;
den Timer killen. -
Weil du ihn erst mit SetPlayerPos aus dem Fahrzeug teleportierst, und danach erst GetPlayerVehicleID machst (das gibt dann 0 aus, du bist ja in keinem Fahrzeug mehr).
Auf Grund des Lags geht es manchmal. -
Poste bitte dein ganzes OnPlayerSpawn.
-
Poste bitte dein OnPlayerRequestClass Callback, möglicherweise ist da ein Fehler.
-
public OnPlayerDisconnect(playerid, reason)
{
SavePlayer(playerid);
ResetPlayer(playerid);
DM[playerid]= 0;
return 1;
}public OnPlayerSpawn(playerid)
{
new String[128];
//Hier geht's weiter nehme ich an...Schreibe es so (ja bei OnPlayerSpawn den ganzen Teil weg, der bringt nichts).
-
Ahh, alles klar. Gut erklärt!
Ändere den Fahrzeug-Teil zu:
else if(IsPlayerInAnyVehicle(playerid))
{
new id = GetPlayerVehicleID(playerid);
SetPlayerPos(playerid, PedX, PedY, PedZ);
SetVehiclePos(id, VehX, VehY, VehZ);
SetVehicleZAngle(id, VehA);
PutPlayerInVehicle(playerid, id, 0);
}Das lag daran, weil du nach SetPlayerPos (= er ist aus dem Fahrzeug) GetPlayerVehicleID machst.
-
Lade dir das crashdetect Plugin herunter und füge es in deinen Server ein: http://forum.sa-mp.com/showthread.php?t=262796
Dann poste was im Server Log steht (bzw. ggf. auch das was im MySQL Log steht), wenn der Server abstürzt.Alternativ wäre es zu empfehlen, wenigstens das R5 Plugin von BlueG zu nutzen, das ist zwar auch veraltet, aber in einigen Dingen doch besser, und stabiler.
-
Das kann ich dir nicht direkt sagen, weil ich zum einen nicht weiß was buggt, und zum anderen der Code ziemlich verwirrend geschrieben ist, mit dem zweidimensionalen Array. Ändere das zu dem was ich dir gegeben habe, dann kann ich dir sagen, wie du weiter machen musst, damit du auch neue hinzufügen kannst. Aber schau erst mal, dass du es so kompiliert bekommst, ohne an sich ein neues DM hinzuzufügen.
-
if(DM[playerid] == 0)
{
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
}
else if(DM[playerid] == 1)
{
new rand = random(4);
SetPlayerInterior(playerid,1);
GivePlayerWeapon(playerid,24,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 2)
{
new rand = 4+random(4);
SetPlayerInterior(playerid,10);
GivePlayerWeapon(playerid,24,500);
GivePlayerWeapon(playerid,25,500);
GivePlayerWeapon(playerid,34,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 3)
{
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,500);
SetPlayerPos(playerid,-2223.0037,1217.4150,87.2109);
SetPlayerFacingAngle(playerid,0);
for(new i = 0; 4 > i;i++)
{
if(one[playerid][i] == 1)
{
SetPlayerVirtualWorld(playerid,i+1);
}
}
}
else if(DM[playerid] == 5)
{
new rand = 12+random(6);
SetPlayerInterior(playerid,3);
GivePlayerWeapon(playerid,24,1337);
GivePlayerWeapon(playerid,25,1337);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 4)
{
new rand = 8+random(4);
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,34,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid] == 6)
{
new rand = 18+random(4);
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,250);
GivePlayerWeapon(playerid,25,250);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
return 1;
}if(!strcmp("/deagle",cmdtext,true))
{
if(DM[playerid] != 0) return SendClientMessage(playerid,COLOR_YELLOW,"Du bist bereits in einer Arena. Benutze /leave");
DM[playerid] = 1;
format(text,sizeof(text),"Spieler %s ist der Deagle Arena beigetreten!",PlayerName(playerid));
SendClientMessageToAll(COLOR_ORANGE,text);
SpawnPlayer(playerid);
return 1;
}Außerdem sieht das new zu DM dann so aus:
new DM[MAX_PLAYERS];Überall wo du dann einen Error bekommst, musst du die zweiten [ ] Klammern entfernen, und anstatt = 1; eben die ID des DMs eintrage (Deagle = 1).
Dann kannst du wesentlich leichter neue hinzufügen, ohne alles zu ändern.
DM verlassen => DM[playerid] zu 0 setzen.