okay danke,
und wie kann man es machen , dass man zufällig an verschiedenen Spawns spawnt?(Also wenn man stirbt)
okay danke,
und wie kann man es machen , dass man zufällig an verschiedenen Spawns spawnt?(Also wenn man stirbt)
http://wiki.sa-mp.com/wiki/Random
Beispiel ist dabei.
Alles anzeigenEinfach so:
switch(classid)
{
case 0:
{
GameTextForPlayer(playerid, "Skin 1", 5000, 4);
gTeam[playerid] = TEAM_USARMY;
}
case 1:
{
GameTextForPlayer(playerid, "Skin 2", 5000, 4);
gTeam[playerid] = TEAM_USARMY;
}
case 2:
{
GameTextForPlayer(playerid, "Skin 3", 5000, 4);
gTeam[playerid] = TEAM_IRGDNWAS;
}
}
Ich würde es anders machen....
new string[10];
format(string,sizeof(string),"Skin %i",classid+1);
GameTextForPlayer(playerid,string, 5000, 4);
gTeam[playerid] = TEAM_IRGDNWAS;
http://wiki.sa-mp.com/wiki/Random
Beispiel ist dabei.
Okay, hab es bis jetzt. Aber immer wenn ich "new value = random(5);" eintrage , kommt ein Crash... Warum? Also der Compailer Crasht?
Pille:
Er will doch dort Namen eintragen, Skin 1, ... waren nur Beispiele. Dort soll Army, Firefighter, ... stehen.
achso, tschuldige
Aber immer wenn ich "new value = random(5);" eintrage , kommt ein Crash... Warum? Also der Compailer Crasht?
Poste bitte den dazugehörigen Code.
Poste bitte den dazugehörigen Code.
Derzeitig habe ich es so:
//Oben im Skript:
new Float:RandomArmySpawn[][4] =
{
// Position(X, Y, Z and Facing Angle)
{245.2496,1858.8896,14.0840,352.6703},
{203.5284,1873.5922,13.1470,267.9237},
{226.0326,1924.9410,17.6406,183.1771}
};
new Float:RandomTerroristenSpawn[][4] =
{
// Position(X, Y, Z and Facing Angle)
{-399.3865,2208.9065,42.4261,13.7749},
{-384.8585,2206.3315,42.4235,283.4435},
{-367.2962,2238.7842,42.4844,288.8203}
};
new value = random(5);//<- Ist das so richtig? Ich bin mir nicht ganz sicher deswegen. Ich glaub statt random muss "[size=10]RandomArmySpawn[/size]" hin oder nicht?
//unter onPlayerSpawn
[size=10]if(gTeam[playerid] == TEAM_USARMY)
{
new rand = random(sizeof(RandomArmySpawn));
SendClientMessage(playerid,-1,"Du bist ein Army!");
}
else if(gTeam[playerid] == TEAM_TERRORISTEN)
{
new rand = random(sizeof(RandomTerroristenSpawn));
SendClientMessage(playerid,-1,"Du bist ein Terrorist!");[/size]
[size=8] }[/size]
Das
new value = random(5);
hat in dem Zusammenhang überhaupt keinen Sinn. Mach das weg.
Alles Klar danke geht jetzt alles!
-> Aber wieder ein Problem... Ich will jetzt die Ranks per Befehl und sowie per Textdraw auslesen.. Textdraw und so passt alles. Aber es steht immer wieder Rank Private.. Obwohl da eigentlich jetzt Captain stehen sollte(ab 1500 Score) In der Datenbank habe ich ebenso auch 1500 Score eingetragen jedoch passiert einfach nichts. Ich habe ebenso einen Befehl reingemacht. (/ranks) womit er den Rank im Spiel abliest , aber auch da steht immer "Private"
... Habe es ebenso grade auch per printf.... ausgeben und es wird genau der Score angzeigt wie aus der Datenbank...
Hier die Codes:
//TextDrawString:
new string[144];
format(string, sizeof(string), "~b~US Army ~w~- ~r~%s", GetUSRank(playerid));
PlayerTextDrawSetString(playerid,USANZEIGE[playerid],string);
PlayerTextDrawShow(playerid, USANZEIGE[playerid]);
//Der befehl /ranks
ocmd:ranks(playerid,params[])
{
new string[128];
format(string,sizeof(string),"Dein Rank ist: '%s'!",GetUSRank(playerid));
SendClientMessage(playerid,0xFF0000FF,string);
return 1;
}
//mein GetUSRank
stock GetUSRank(playerid)
{
new usrankname[30];
if(SpielerInfo[playerid][pScore] >= 0) { usrankname = "Private"; }
else if(SpielerInfo[playerid][pScore] >= 50) { usrankname = "Specialist"; }
else if(SpielerInfo[playerid][pScore] >= 650) { usrankname = "Coporal"; }
else if(SpielerInfo[playerid][pScore] >= 850) { usrankname = "Sergeant"; }
else if(SpielerInfo[playerid][pScore] >= 1500) { usrankname = "Captain"; }
else if(SpielerInfo[playerid][pScore] >= 4500) { usrankname = "Major"; }
else if(SpielerInfo[playerid][pScore] >= 6500) { usrankname = "Lieutenant"; }
else if(SpielerInfo[playerid][pScore] >= 10000) { usrankname = "General"; }
return usrankname;
}
Wenn ich 1000 Punkte habe, dann habe ich mehr als 0, somit hört deine if-else-if-Verknüpfung schon beim ersten Schritt auf.
Du musst mit der größten Score anfangen, wenn du es so machst.
Sprich:
10000
6500
...
0
Alles klar danke .. es geht jetzt zwar... aber ich komme an den /setarmour & /sethp nicht weiter.
Der Fehler: Ich hab es per String gemacht , und wenn es dann ingame steht kommen da solche Zahlen raus: "5481861618616" obwohl ich nur 1 oder 50 eingegeben hab. Es geht halt , aber nur die Texte sind falsch:
ocmd:setarmour(playerid,params[])
{
if(SpielerInfo[playerid][pAlevel] >= 3)
{
new pID,string[128],aname[MAX_PLAYERS],spieler[MAX_PLAYERS],Float:armour;
if(IsPlayerConnected(pID))
{
if(sscanf(params,"uf",pID,armour))return SendClientMessage(playerid, 0xFF0000FF,"[FEHLER]{FFFFFF} /SetArmour [Name/ID] [Armour]");
{
GetPlayerName(playerid,aname,sizeof(aname));
GetPlayerName(pID,spieler,sizeof(spieler));
format(string,sizeof(string),"[A-INFO]{FF9100} %s %s {FFFFFF}hat {FF9100}%s's {FFFFFF}Armour auf {00FF00}%i {FFFFFF}gesetzt!",GetPlayerAdminRankName(playerid),aname,spieler,armour);
SendAdminMessage(0xFF0000FF,string);
format(string,sizeof(string),"[A-INFO]{FF9100} %s %s {FFFFFF}hat dein Armour auf {00FF00}%i {FFFFFF}gesetzt!",GetPlayerAdminRankName(playerid),aname,armour);
SendClientMessage(pID,0xFF0000FF,string);
SetPlayerArmour(playerid, armour);
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} Dieser Spieler ist nicht Online!");
}
}
return 1;
}
%i
zu
%0.1f
i = Integer
f = Float
Alles Klar danke!
Jetzt habe ich eine Frage: Ich möchte gerne jetzt einen System schreiben, indem man wenn man gebannt wurde , und dann wird ein Timer gestartet und wenn der Spieler nicht entbannt wurde etc. dann soll er nach dem der Time abgelaufen ist, gelöscht werden. Würde dass gehen? Falls ja , wie genau denn? (Ich besitze R5 MySQL)
Schau mal hier:
[ FILTERSCRIPT ] TimeBan Mysql by ZABUS
[ INCLUDE ] FoxBan v2.0c - Timeban-System
http://forum.sa-mp.com/showthread.php?t=269126
Tutorial:
http://forum.sa-mp.com/showthread.php?t=465410
Das sollte helfen.
Hey,
wie war das nochmal mit dem Hooken von Funktionen?
Möchte die normale SetPlayerHealth() Funktion mit einer eigenen selbst definierten Funktion ersetzen, sodass ich nur noch SetPlayerHealth() verwenden muss.
Danke im Voraus.
Grüße
@Mr.Reese:
[ SCRIPTING ] Includes richtig erstellen | Hooking ganz einfach
Alles anzeigenSchau mal hier:
[ FILTERSCRIPT ] TimeBan Mysql by ZABUS
[ INCLUDE ] FoxBan v2.0c - Timeban-System
http://forum.sa-mp.com/showthread.php?t=269126
Tutorial:
http://forum.sa-mp.com/showthread.php?t=465410
Das sollte helfen.
Ich glaub du hast mich nicht verstanden
, Ich wollte fragen , ob man einen Spieler löschen kann also einen Account über der Datenbank mit einen MySQL befehl. Und wenn ja , welchen?