Versuche es so:
new userid = strval(inputtext);
if(!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "{FF8484}Ungütltige{FFFFFF} SpielerID!");
if(IsPlayerConnected(userid))
{
new name[MAX_PLAYER_NAME], str2[50], bool:found;
GetPlayerName(userid, name, sizeof(name));
for(new i = 0; i < sizeof(AkteInfo); i++)
{
if(!strcmp(AkteInfo[i][akte_name],name) && strlen(AkteInfo[i][akte_name])) //!strcmp heißt strcmp == 0. strcmp gibt 0 zurück, wenn beide Strings identisch sind, daher !strcmp.
{
PlayerTextDrawShow(playerid, AktenBox[playerid][7]);
format(str2, sizeof(str2),"%s", AkteInfo[i][akte_grund1]);
PlayerTextDrawSetString(playerid, AktenBox[playerid][7], str2);
found = true;
break;
}
}
if(!found) return SendClientMessage(playerid, COLOR_WHITE, "Spieler konnte {FF8484}nicht{FFFFFF} gefunden werden.");
}
else SendClientMessage(playerid, COLOR_WHITE, "Spieler ist {FF8484}Offline{FFFFFF}!");
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Danke, funktioniert einwandfrei
-
Funktioniert klasse. Möchte jetzt den Spieler eine Waffe geben sobald er das PickUp aufnimmt.
Könnte das jetzt per OnPlayerPickUpPickUp machen, aber habe folgendes gelesen nur scheint das nicht zu klappen:
"Certain pickup types come with 'automatic responses', for example using an M4 model in the pickup will automatically give the player the weapon and some ammo. For fully scripted pickups, type 1 should be used."
Erhalte nicht automatisch eine Waffe/Munition, weiß nicht woran das liegt. Also müsste ich das denke ich per Public selber lösen, aber wie überprüfe ich welches Pickup Model der Spieler aufgehoben hat sodass ich ihn die entsprechende Waffe geben kann?
Mein Public schaut aktuell so aus:
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i = 0; i < MAX_PLAYERS; i++) {
if(eventweapon[i] == pickupid) {
//Hier eventuell waffen geben...
DestroyPickup(eventweapon[i]);
eventweapon[i] = -1;return 1;
}
}
return 1;
} -
Funktioniert klasse. Möchte jetzt den Spieler eine Waffe geben sobald er das PickUp aufnimmt.
Könnte das jetzt per OnPlayerPickUpPickUp machen, aber habe folgendes gelesen nur scheint das nicht zu klappen:
"Certain pickup types come with 'automatic responses', for example using an M4 model in the pickup will automatically give the player the weapon and some ammo. For fully scripted pickups, type 1 should be used."
Erhalte nicht automatisch eine Waffe/Munition, weiß nicht woran das liegt. Also müsste ich das denke ich per Public selber lösen, aber wie überprüfe ich welches Pickup Model der Spieler aufgehoben hat sodass ich ihn die entsprechende Waffe geben kann?
Mein Public schaut aktuell so aus:
public OnPlayerPickUpPickup(playerid, pickupid){ for(new i = 0; i < MAX_PLAYERS; i++) { if(eventweapon[i] == pickupid) { //Hier eventuell waffen geben... DestroyPickup(eventweapon[i]); eventweapon[i] = -1; return 1; } } return 1;}
-
Sind die Geschwindigkeiten eines Command ausschlaggebend?
Ich nutze seit langen eigentlich ycmd das habe ich mir damals so angewöhnt.
Mittlerweile gibt es aber schon relativ viel flottere Prozessoren.
Jetzt bevor ich sinnlos umspringe auf einem schnelleren wollte ich Fragen, inwiefern sich das auswirkt.Im Auge habe ich aktuell den Pawn.CMD da laut Benchmark dieser gegenüber ycdm bedeutend schneller ist.
Wenn ich hier diesen Test von dem Autor trauen kann.
Quelle: http://forum.sa-mp.com/showthread.php?t=608474Würde es sich dann um eine Optimierung handeln die Ausschlaggebend ist oder macht das bei einem Command nichts wirklich aus ?
-
Ich hab das mit dem Tutorial versucht, und es gescriptet.
Leider hat es nicht funktioniert. -
Ich hab das mit dem Tutorial versucht, und es gescriptet.
Leider hat es nicht funktioniert.Code
-
Code
Hier: Tutorialcode
Das funktioniert soweit, es wird mir angezeigt.
Aber nach dem Login wird mir das wieder angezeigt, und wenn ich nach dem Speichern,schreibe. Wird der Spieler nach jedem Step gespawnt.
@N1co -
Beitrag von GUCCI ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Speicherst du "Tutorial[playerid]" diesen Wert irgendwo ?
Ansonsten wird nach jedem, Neustart vom Server die Variable "Tutorial" bei jedem auf 0 gesetzt.
Und somit muss er dann immer das Tutorial erneuert machen.Und bei dem letzen Case brauchst du auch nicht den Timer vom Tutorial setzen.
-
Jetzt bevor ich sinnlos umspringe auf einem schnelleren wollte ich Fragen, inwiefern sich das auswirkt.
Gar nicht. Ich habe meinen Server 6 Jahre lang, zum Teil mit über 100 Spielern, am laufen gehabt, ohne dass es je Probleme gab. Habe dcmd genutzt, und zum Teil waren die alten Commands noch mit strcmp am laufen, die ohne Parameter.
Für alles mögliche ein Plugin zu nutzen finde ich nicht sinnvoll. Solange es einen wirklichen Mehrwert bringt (Streamer Plugin, IRC Plugin, etc) macht es Sinn, aber für 0,1ms pro Aufruf eines Befehls, das wirkt sich niemals aus. Da müssten in der gleichen Sekunde 100 Spieler einen Befehl eingeben, dass sich das um 10ms auswirkt, und selbst das merkt man nicht, da die 0,1ms in Relation zu der Dauer die der Befehl selbst benötigt, um alle Statements darin durchzuführen, ein Vielfaches ist. -
Hier: TutorialcodeDas funktioniert soweit, es wird mir angezeigt.
Aber nach dem Login wird mir das wieder angezeigt, und wenn ich nach dem Speichern,schreibe. Wird der Spieler nach jedem Step gespawnt.
@N1coDas "Tutorial[playerid] = 1;" ist nur ein Swichenspeicher. Beim nächsten Login ist das weg.
Ersetz das einfach durch "if(PlayerInfo[playerid][pTutorial] == 0)". -
Beitrag von N1co ()
Dieser Beitrag wurde von shoxinat0r aus folgendem Grund gelöscht: Spam (). -
Beitrag von Mr.Secret ()
Dieser Beitrag wurde von shoxinat0r aus folgendem Grund gelöscht: Spam (). -
Das "Tutorial[playerid] = 1;" ist nur ein Swichenspeicher. Beim nächsten Login ist das weg.Ersetz das einfach durch "if(PlayerInfo[playerid][pTutorial] == 0)".
Das funktioniert trotzdem irgendwie nicht.
//Edit: N1co ich hab dir eine PN geschrieben. Beitrag wurd aber gelöscht
@N1co -
Kann man bei einem Float eigentlich nur den Wert nach dem .(punkt) auslesen ?
-
Du kannst mit "floatround" die aktuelle Zahl von deinem Float abziehen. Dann bleibt nur noch ein 0,XXXXX Wert.
Um dann diese "0" davor weg zu bekommen, einfach den restlichen Float z. B. mal 10000 nehmen.D.h. Beispielsweise:
Code
Alles anzeigennew Float:Zahl = 53.31265465665; Zahl = Zahl - floatround(Zahl, floatround_floor); // Ergebnis Bsp: 0.31265465665 Zahl *= 1000; // Ergebnis Bsp: 312.65465665 (Mit floatround ggf. Kommazahlen entfernen)
Interessant hierzu: http://wiki.sa-mp.com/wiki/Floats -
Hallo,
ich hab ne kurze Frage und zwar gibt es ein Callback was abfragt, ob das Fahrzeug einen Schaden zugezogen hat?
Denn ich habe vor, dass wenn das Fahrzeug des Spielers Schaden zunimmt ( wleches jederzeit aktualisiert wird ) ein Textnachricht gesendet wird.Daher meine Frage gibt es ein Callback, oder muss ich mir mit GetVehicleHealth / GetVehicleDamageStatus ne kleine Funktion basteln?
-
Meist du das? ... [wiki]OnVehicleDamageStatusUpdate[/wiki]
-
genau das!
Dank dir @German_ScripterHD