[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Gibt es die möglichkeit einen kleinen Brake von 2 Sekunden einzulegen bei einem Scriptabschnitt.
Heiß er gibt einen befehl ein und erst zwei sekunden später soll was passieren aber ohne TImer geht das ? -
Du kannst dir das hier anschauen: [ MAKRO ] Sleep Funktion
Funktioniert allerdings nicht unter jeder Bedingung.Alternativ: https://wiki.sa-mp.com/wiki/Keywords:Statements#sleep
Allerdings steht der Server eben dann die Zeit X, sprich es wird nichts synchronisiert oder erkannt. -
Schnelle Frage:
Ich habe einen /gotoxyz Befehl, aber der funktioniert nur, wenn man die Koordinaten mit Leertasten schreibt. (Beispiel: /gotoxyz 1337.0 1337.0 13.37 0 0)
Aber ich möchte das halt so machen, dass man die Koordinaten mit den Komma's einsetzen soll, da mir das persönlich einfacher und nicht so aufwendig ist, wenn ich mal schnell an einem Ort muss, anstatt erst die Koordinaten zu formatieren.Mein Befehl sieht so aus:
COMMAND:gotoxyz(playerid,params[])
{
if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
new string[128],Float:x,Float:y,Float:z,interior,world;
if(Spieler[playerid][pAdminOnduty] == false)return SendClientMessage(playerid,GRAU,"Du bist nicht im Admindienst.");
if(sscanf(params,"fffii",x,y,z,interior,world))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /gotoxyz [Xcord Ycord Zcord][Interior][Virtuelle Welt]");
if(x >= 20000.0 || y >= 20000.0 || z >= 10000)return SendClientMessage(playerid,GRAU,"Das kannst du nicht!");
if(IsPlayerInAnyVehicle(playerid))
{
new seatid = GetPlayerVehicleSeat(playerid);
SetPlayerPosEx(playerid,x,y,z);
SetVehiclePosEx(GetPlayerVehicleID(playerid),x,y,z);
PutPlayerInVehicleEx(playerid,GetPlayerVehicleID(playerid),seatid);
SetPlayerInterior(playerid,interior);
SetPlayerVirtualWorld(playerid,world);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),world);
LinkVehicleToInterior(GetPlayerVehicleID(playerid),interior);
format(string,sizeof(string),"Du hast dich zu den Coordinaten %.1f,%.1f,%.1f [Interiorid : %i][Virtuelle Welt: %i] geportet.",x,y,z,interior,world);
SendClientMessage(playerid,GELB,string);
}
else
{
SetPlayerPosEx(playerid,x,y,z);
SetPlayerInterior(playerid,interior);
SetPlayerVirtualWorld(playerid,world);
format(string,sizeof(string),"Du hast dich zu den Coordinaten %.1f,%.1f,%.1f [Interiorid : %i][Virtuelle Welt: %i] geportet.",x,y,z,interior,world);
SendClientMessage(playerid,GELB,string);
}
return 1;
} -
if(sscanf(params,"p<,>fffii",x,y,z,interior,world))
-
Kann mir mal jemand eine Idee geben wie ich rauslesen kann an welchem ort ein spieler sich derzeit aufhält also meine so ab doherty oder el corona ?
-
doherty oder el corona
-
inero = GetPlayerInterior(playerid);
if(!inero == 0)return SendClientMessage(playerid,HQInfo,"(( Spieler ist in einem Interior ))");
D:\Spiele\server\gamemodes\SFRP.pwn(5502) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Warning.
-
if(inero != 0)
Oder
if(inero)
Wie es dir lieber ist. -
Oder
if(!(inero ==0)) -
-
Welche Vorteile bringt mir eigentlich GetPlayerPoolSize zu GetMaxPlayers ?
mfg
-
GetPlayerPoolSize gibt dir die höchste ID aus, GetMaxPlayers die höchstmögliche ID+1 (also die Anzahl an Slots).
Mit der Nutzung von GetPlayerPoolSize sind Schleifen durch alle Spieler etwas schneller, allerdings gibt es bessere Möglichkeiten wie zum Beispiel foreach oder ähnliche. -
Habe mir die Include foreach gedownloaded, verwendung ?
mfg
-
foreach(Player, i)
{
SendClientMessage(i, -1, "Hallo Welt.");
} -
[16:48:07] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`pArchs0` int(2) NOT NULL,`pArchs1` int(2) NOT NULL,`pArchs2` int(2) NOT NULL,`p' at line 1
EDIT: Hier die Speicherung
for(new i=0;i<MAX_ARCHIVMENTS;i++)
{
mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s,pArchs%i='%d'",mainquery,i,Spieler[playerid][pArchs][i]);
} -
Poste bitte mehr vom Code oder lass dir das mainquery mal mit einem Print ausgeben, und poste das dann.
-
strcat(mainquery,"UPDATE "#SQLTAG"_account_inventar SET ");
for(new i=0;i<MAX_ARCHIVMENTS;i++)
{
mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s,pArchs%i='%d'",mainquery,i,Spieler[playerid][pArchs][i]);
}
mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s WHERE Name='%s'",mainquery,Spieler[playerid][pName]);
mysql_function_query(MySqlConnection,mainquery,false,"","");
strdel(mainquery,0,sizeof(mainquery));for(new i=0;i<MAX_ARCHIVMENTS;i++)
{
strcat(query,",");
format(query,sizeof(query),"%s`pArchs%i` int(2) NOT NULL",query,i);
}
strcat(query,")");
mysql_function_query(MySqlConnection,query,false,"","");
strdel(query,0,sizeof(query));Es ist so habe insgesammt 35 Archivments die man im Spiel bekommen kann. Und ich wollte das das es zum "strcat(mainquery,"UPDATE "#SQLTAG"_account_inventar SET ");" datz gespeichert wird.. Jedoch gehts nicht
-
Der erste Teil sollte so aussehen:
strcat(mainquery,"UPDATE "#SQLTAG"_account_inventar SET ");
for(new i=0;i<MAX_ARCHIVMENTS;i++)
{
mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s%spArchs%i='%d'",mainquery,(i!=0)?(","):(""),i,Spieler[playerid][pArchs][i]);
}
mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s WHERE Name='%s'",mainquery,Spieler[playerid][pName]);
mysql_function_query(MySqlConnection,mainquery,false,"","");
strdel(mainquery,0,sizeof(mainquery));Beim zweiten Teil kann ich es dir nicht sagen, da fehlt der Anfang.
-
Beitrag von Fernando_Jizuya ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Beitrag von Akino Kiritani ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.