[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
-
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/sh", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid, 0xFF8000FF, "Hier steht dann dein Text");
SetPlayerPos(playerid, 384.808624, 173.804992, 1008.382812);
SetPlayerInterior(playerid, 3);
return 1;
}
return 0;
}Du hast die Klammer nach dem return 0; vergessen.
-
Hast du direkt unter
return 0;ein
}? -
Wie gesagt, kenne mich nur wenig mit Scriping aus.
Ja, habe da eine Klammer.
-
-
Alles anzeigen
public OnPlayerCommandText(playerid,cmdtext[]){
if(!strcmp(cmdtext,"/sh",true)){
return SendClientMessage(playerid,0xFF8000FF,"Hier steht dann dein Text"),SetPlayerInterior(playerid,3),SetPlayerPos(playerid, 384.808624, 173.804992, 1008.382812);
}
return 0;
}
Martey: Versuch das mal
Geht leider immer noch nicht. -
Alles anzeigen
public OnPlayerCommandText(playerid,cmdtext[]){
if(!strcmp(cmdtext,"/sh",true)){
return SendClientMessage(playerid,0xFF8000FF,"Hier steht dann dein Text"),SetPlayerInterior(playerid,3),SetPlayerPos(playerid, 384.808624, 173.804992, 1008.382812);
}
return 0;
}
Martey: Versuch das mal
Ich möchte ja nicht deine Illusion zerstören, jedoch ist pawn nicht threadsafe.
Das heißt, die variante geht nicht gut. -
Ich möchte ja nicht deine Illusion zerstören, jedoch ist pawn nicht threadsafe.
Das heißt, die variante geht nicht gut.Och nee, bitte tu mir ein gefallen und lösche diesen Post.
Multiple Returns oder Aktionen haben nix mit mehrern Threads zu tun in Pawn generel alles was von Pawn ausgeführt wird hat nix mit mehrern Threads zu tun da Pawn Singelthreaded ist.
Der einzige Unterschied bei der genutzten variante von ihm , ist das der Opcode break; nicht ausgeführt wird.
Siehe hier nochmal für mehr Einzelheiten.
//edit
Zusätzliche Info:
-
Geht leider immer noch nicht.
Hey, dann versuche es mal wie ich es dir geschrieben habe mit ocmd. Eigentlich sollte das alles gehn , wir wohl ein fehler in deinem script vorliegenMFG
-
-
Hey,
wie kann man eig ne for-Schleife richtig beenden?
Code:
if(GF[zone][flaggeerobert] >= FlaggeZeit)
{
format(str,sizeof(str),"|Gangfight| %s hat die Flagge erobert! |Gangfight|",Name(playerid));
for(new i = 0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if((Spieler[i][Fraktion] != GZ[zone][owner]) && (Spieler[i][Fraktion] != GF[zone][angreifer]))continue;
SendClientMessage(i,Gelb,str);
break;
}
}
Habe auch anstatt break -> continue verwendet, jedoch klappt eig nichts, habe alles iwi wieder vergessen
-
break ist schon richtig es geht aber auch return jedoch wird dann der nachfolgende code nicht ausgeführt
also
continue = überspringen
break = stoppen
return = beenden -
break ist schon richtig es geht aber auch return jedoch wird dann der nachfolgende code nicht ausgeführt
also
continue = überspringen
break = stoppen
return = beenden
Ahh shit, dann hatte ichs doch richtig
Es hat nicht geklappt, weil ich vergessen habe, die Variable für die Zeit zurückzusetzen ( die die Funktion aufruft ), deswegen kam es zu nem Mega-Spam
Danke dir trdm
-
Alles anzeigen
if (strcmp("/sh", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid,0xFF8000FF,"Hier steht dann dein Text");
SetPlayerPos(playerid,384.808624,173.804992,1008.382812);
SetPlayerInterior(playerid,3);
return 1;
}Geht immer noch nicht....
-
Mal ganz doof gefragt, was geht nicht?
-
ich möchte das 2 fraktionen den gleichen befehl nutzen können aber ingame kommt dann du bist kein mechaniker was ist falsch ?
if(strcmp(cmd, "/refill", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(GetPlayerFaction(playerid) == 24 || GetPlayerFaction(playerid) == 25)// if(PlayerInfo[playerid][pJob] != 7 &&
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein KFZ-Mechaniker!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /refill [playerid] [Preis p.L.]");
return 1;
}
new playa;
new money;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
money = strval(tmp);
if(money < 1 || money > 100) { SendClientMessage(playerid, COLOR_GREY, "Der Preis darf nicht unter 1$ oder über 100$ liegen!"); return 1; }
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
if(ProxDetectorS(8.0, playerid, playa)&& IsPlayerInAnyVehicle(playa))
{
if(playa == playerid) { SendClientMessage(playerid, COLOR_GREY, " Du kannst dein eigenes Auto nicht auftanken!"); return 1; }
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Du hast %s das Betanken seines Auto für $%d pro Liter angeboten .",giveplayer,money);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* KFZ-Mechaniker %s bietet dir die Betankung deines Autos für $%d pro Liter an, (gib /accept refill) ein um anzunehmen.",sendername,money);
SendClientMessage(playa, COLOR_LIGHTBLUE, string);
SendClientMessage(playa, COLOR_GRAD2, "Es erscheint dann ein Dialog mit der Möglichkeit, die zutankende Literanzahl einzugeben.");
RefillOffer[playa] = playerid;
RefillPrice[playa] = money;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Dieser Spieler ist nicht in deiner Nähe / nicht in seinem Auto.");
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Der Spieler ist Offline.");
}
}
return 1;
}
if(strcmp(cmd, "/repair", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(GetPlayerFaction(playerid) != 24 || GetPlayerFaction(playerid) != 25)
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein Mechatroniker.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /repair [playerid] [Preis]");
return 1;
}
new playa;
new money;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
money = strval(tmp);
if(money < 1 || money > 450) { SendClientMessage(playerid, COLOR_GREY, " Der Preis darf nicht unter 1$ oder über 450$ liegen!"); return 1; }
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
if(ProxDetectorS(8.0, playerid, playa)&& IsPlayerInAnyVehicle(playa))
{
new engine,lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playa),engine,lights,alarm,doors,bonnet,boot,objective);
if(playa == playerid) return SendClientMessage(playerid, COLOR_GREY, "Du kannst dein eigenes Auto nicht Reparieren!");
if(bonnet == VEHICLE_PARAMS_OFF) return SendClientMessage(playerid, COLOR_GREY, "* Die Motorhaube muss zum Reparieren geöffnet sein.");
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Du hast %s die Reparatur seines Wagens für $%d angeboten.",giveplayer,money);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* KFZ-Mechaniker %s bietet dir eine Reparatur deines Wagens für $%d an, (gib /accept repair) ein um anzunehmen.",sendername,money);
SendClientMessage(playa, COLOR_LIGHTBLUE, string);
RepairOffer[playa] = playerid;
RepairPrice[playa] = money;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Dieser Spieler ist nicht in deiner Nähe / nicht in seinem Wagen.");
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Der Spieler ist Offline.");
}
}
}
return 1;
} -
-
if (strcmp("/sh", cmdtext, true, 3) == 0)
-
Du müsstest
if(GetPlayerFaction(playerid) == 24 || GetPlayerFaction(playerid) == 25)in
if(GetPlayerFaction(playerid) != 24 || GetPlayerFaction(playerid) != 25)
ändern, da du die Abfrage so gemacht hast, wenn die Spieler in diesen beiden Fraktionen sind, soll die Meldung kommen das Sie kein Mechaniker sind.
Mit freundlichen Grüßen
SLaYz
