[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Dir neue Version nutzt verschiedene Threads, bzw kann das nutzen, und vor allem besteht der Unterschied natürlich darin, dass das R39-2 mit caching arbeitet, sprich es ist wesentlich performanter als das R5.
Alles was du mit dem R5 machen kannst, kannst du auch mit dem R39-2 machen.
Wie gesagt, wenn du mit der Zeit gehen willst, nutze das R39-2. Es lohnt sich auf jeden Fall.
@[GeD]Max:
OnPlayerRequestClass:
switch(classid)
{
case 0: GameTextForPlayer(playerid, "Skin 1", 5000, 4);
case 1: GameTextForPlayer(playerid, "Skin 2", 5000, 4);
case 2: GameTextForPlayer(playerid, "Skin 3", 5000, 4);
}Das kannst mit der Kamera kannst du mit http://wiki.sa-mp.com/wiki/InterpolateCameraPos machen. Bei case 0 lässt du es zu der linken Position bewegen, bei case 1 wieder zu der rechten, bei case 2 zur linken, usw.
Versuch es einfach mal.Alles klar danke, aber irgendwie soll er ja zum Team zugewiesen werden.. kann ich einfach so machen: case 0: GameTextForPlayer(playerid, "Skin 1", 5000, 4),gTeam[playerid] = TEAM_USARMY ; ... ? Oder wie soll dass gehen?
-
Einfach 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;
}
} -
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. -
Einfach 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. -
Beitrag von [KoSoVa] ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
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.1fi = Integer
f = Float -
Beitrag von [KoSoVa] ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
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=269126Tutorial:
http://forum.sa-mp.com/showthread.php?t=465410Das sollte helfen.