KEY_SECONDARY_ATTACK
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Benutze am besten einfache For-Schleife.
http://wiki.sa-mp.com/wiki/For#forSolltest du damit nicht zurechtkommen Adde mich mal in Skype.
Das kann man alles schlecht erklären, ohne endlos-lange Schreiben zu müssen
Danke für den Link, hab mir dazu aber noch ein anderes Tutorial durchgelesen und bin jetzt auf das gewünschte Ergebnis gekommen.Nebenbei könntest du mir eventuell auch bei einem anderen Problem weiterhelfen: Ich habe einen Arrestbefehl erstellt, d.h. man kann mit /arrest ID Zeit Grund einen Spieler für x Minuten einsperren. Der Befehl funktioniert wunderbar, allerdings möchte ich den entsprechenden Timer einbauen, damit der Spieler dann nach diesen x Minuten für die er eingesperrt wurde automatisch zu einer gewünschten Stelle teleportiert wurde.
Der Befehl:
ocmd:arrest(playerid, params[])
{
new Zeit, pID,string[128];
new Grund;
if(sscanf(params,"uds",pID,Zeit, Grund)) return SendClientMessage(playerid,ROT,"Benutze: /arrest ID Zeit Grund");
if(IsPlayerConnected(pID))
{
if(IsPlayerInRangeOfPoint(playerid,10,257.4440,86.2518,1002.4453))
{
format(string,sizeof(string), "Verbrecher %s wurde von %s für %d Minuten wegen %s eingesperrt",SpielerName(pID),SpielerName(playerid),Zeit, Grund);
SendClientMessageToAll(ROT,string);
SetPlayerPos(pID,264.0817,77.4369,1001.0391);
SetPlayerInterior(pID,6);
SetPlayerFacingAngle(pID,273.6652);
SetCameraBehindPlayer(pID);
}
else
{
SendClientMessage(playerid, ROT, "Du bist nicht am Arrest Point");
}
}
else
{
SendClientMessage(playerid,ROT,"Diesen Spieler gibt es nicht");
}
return 1;
}mfg
-
Nimm nen Timer, stell ihn auf 1 Sekunde oder 1 Minute und rechne dann die Knastzeit runter, die du vorher in einer Variable festgehalten hast.
Dazu einfach:
http://wiki.sa-mp.com/wiki/SetTimer
+
For-Schleife -
Hey Leuts,
wie kann ich bei meinem Haussystem abfragen, ob pID in der nähe von playerid ist, damit pID mit playerid in playerid's Haus kann?
Ich glaub mal ihr habt es verstanden.lg
-
Er schreibt eine 0 in die SpielerDatei anstat eine 2.
if(INI_Open(getINI(playerid)))
{
INI_WriteInt("Geschlecht",2);
INI_Save();
INI_Close();
} -
was hast du da vor zu versuchen?
nein es geht nicht da du das Prinzip des Timers nicht verstehst -
Hallo!
Ist es möglich, den vorgegebenen Wert bei einer eNum zurückzuverfolgen:
bsp:
cData[vehicleid][cID]
Ich möchte nun einen Befehl realisieren, der den Spieler in das Fahrzeug mit der angegebenen cID setzt und nicht einfach "von der vehicleid" ausgeht.
Ich hoffe ihr versteht was ich damit meine.
-
Wieso krieg ich wenn ich mich einlogge 6 wanteds ?
Befehl Su
ocmd:su(playerid,params[])
{
if(!IstSpielerInFraktion(playerid, 1))return SendClientMessage(playerid,ROT,"Du bist nicht in der Frak LSPD");
new pID,Sterne,Grund,Policetyp[MAX_PLAYER_NAME+1],Verhafteter[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, Policetyp, sizeof(Policetyp));
GetPlayerName(playerid, Verhafteter, sizeof(Verhafteter));
if(sscanf(params,"uis",pID,Sterne,Grund))return SendClientMessage(playerid,ROT,"USAGE: /su [PlayerID] [Wanteds] [Grund]");
if(IsPlayerConnected(pID))return SendClientMessage(playerid, ROT, "INVALID PlayerID");
GivePlayerWanted(playerid,Sterne);
SendClientMessage(playerid,Blau,"Du hast %i bekommen Grund:%s",Sterne,Grund);
SendPlayerMessageToPlayer(IstSpielerInFraktion(playerid, 1), Blau, "%s hat %s verhaftet Grund: &s Wanteds %i!",Policetyp,Verhafteter,Grund,Sterne);
return 1;
}Load Acc
stock LoadAccount(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, dini_Int(Spielerdatei, "Geld"));
Spieler[playerid][Level]=dini_Int(Spielerdatei, "Level");
Spieler[playerid][Skin]=dini_Int(Spielerdatei, "Skin");
Spieler[playerid][Adminlevel]=dini_Int(Spielerdatei, "Adminlevel");
Spieler[playerid][Fraktion]=dini_Int(Spielerdatei, "Fraktion");
Spieler[playerid][Tode]=dini_Int(Spielerdatei, "Tode");
Spieler[playerid][Morde]=dini_Int(Spielerdatei, "Morde");
Spieler[playerid][Wanteds]=dini_Int(Spielerdatei, "Wanteds");
Spieler[playerid][Leader]=dini_Int(Spielerdatei, "Leader");
format(Spieler[playerid][Name], MAX_PLAYER_NAME, "%s",dini_Get(Spielerdatei, "Name"));
SetPVarInt(playerid,"loggedin",1);
SetPlayerWantedLevel(playerid,Wanteds);
return 1;
}
uund stock GivePlayerWanted
stock GivePlayerWanted(playerid,Float:WantedLevel)
{
new Float:wanted; GetPlayerHealth(playerid,wanted);
SetPlayerHealth(playerid,wanted+WantedLevel);
} -
Ich möchte das der Spieler nicht in das Fahrzeug einsteigen kann wenn er nicht im Dienst ist, bekomme das aber leider nicht hin. (Er geht durch ein Pickup in den Dienst)
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(IsPlayerInVehicle(playerid,498))
{
if(Dienst2[playerid] == 0)
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,GELB,"Du bist nicht im Dienst!");
}else if(Dienst2[playerid] == 1)
{
SendClientMessage(playerid,ROT,"Fahre nun die Checkpoints ab");
}
}
return 1;
}Das Dienstpickup
if(pickupid==dienstsps)
{
if(Dienst2[playerid] == 0)
{
new string[128];
SetPlayerColor(playerid,GELB);
format(string,sizeof(string),"PS HQ: %s hat den Dienst als Lieferant begonnen",SpielerName(playerid));
SendClientMessageToAll(TUERKIS,string);
Dienst2[playerid] = 1;
}
else if(Dienst2[playerid] ==1)
{
new string[128];
SetPlayerColor(playerid,ROT);
format(string,sizeof(string),"PS HQ: %s hat den Dienst als Lieferant beendet",SpielerName(playerid));
SendClientMessageToAll(TUERKIS,string);
Dienst2[playerid] = 0;
}
}mfg
-
Mostey
Du kannst im OnPlayerEnterVehicle Calllback kein RemovePlayerFromVehicle bzw IsPlayerInVehicle verwenden, weil der Spieler ja noch nicht im Fahrzeug drinnen ist wenn das Callback aufgerufen wird.
Setzt das unter OnPlayerStateChange rein und überprüfe ob newstate == PLAYER_STATE_DRIVER ist, dann sollte das klappen. -
Hey Leuts,
wie kann ich bei meinem Haussystem abfragen, ob pID in der nähe von playerid ist, damit pID mit playerid in playerid's Haus kann?
Ich glaub mal ihr habt es verstanden.
Sorry für Pushing aber es ist wichtig. :<lg
-
Zeile (4416) : error 017: undefined symbol "MoneySpam"
Zeile (4416) : warning 215: expression has no effect
Zeile (4416) : error 001: expected token: ";", but found "]"
Zeile (4416) : error 029: invalid expression, assumed zero
Zeile (4416) : fatal error 107: too many error messages on one lineIst ein LoH Edit!
Was muss ich machen, kriegs nich gefixxt!
Wenn ich alles lösche bekomm ich 26 Klammerfehler! -
Sorry für Pushing aber es ist wichtig. :<lg
Die Position von playerid mithilfe von GetPlayerPos holen und anschließend mit IsPlayerInRangeOfPoint(pID.... abfragen ob er in der nähe ist.
Umgekehrt geht das natürlich auch.Ohne Code kann man dir nicht helfen
-
Zeile (4416) : error 017: undefined symbol "MoneySpam"
Zeile (4416) : warning 215: expression has no effect
Zeile (4416) : error 001: expected token: ";", but found "]"
Zeile (4416) : error 029: invalid expression, assumed zero
Zeile (4416) : fatal error 107: too many error messages on one lineIst ein LoH Edit!
Was muss ich machen, kriegs nich gefixxt!
Wenn ich alles lösche bekomm ich 26 Klammerfehler!"MoneySpam" deklarieren.
-
Ist ein LoH Edit!
Was muss ich machen, kriegs nich gefixxt!
Wenn ich alles lösche bekomm ich 26 Klammerfehler!
"MoneySpam" deklarieren.Direkt 26 Klammerfehler.
-
Die Position von playerid mithilfe von GetPlayerPos holen und anschließend mit IsPlayerInRangeOfPoint(pID.... abfragen ob er in der nähe ist.
Umgekehrt geht das natürlich auch.
Okay schon mal ein Anfang, vielen dank.
Hab' es bisher nun so:
ocmd:enter(playerid,params[])
{
for(new haus=1;haus<MAX_HAUS;haus++)
{
if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
{
new name[MAX_PLAYER_NAME], pID, Float:x,Float:y,Float:z;
GetPlayerName(playerid,name,sizeof name);
GetPlayerPos(playerid,x,y,z); // Ich denke mal
if(IsPlayerInRangeOfPoint(pID,5,x,y,z); // nicht dass es so funktionieren würde, oder doch?
if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)
// Rest.
Habs im Code erklärt.lg
-
Das ist eine if Abfrage, also muss danach auch eine Anweisung kommen.
if(IsPlayerInRangeOfPoint(pID, 5.0, x, y, z))
{
}Du musst die pID aber ja auch von irgendwo hernehmen, sonst hat sie den Wert 0
-
Wieso krieg ich wenn ich mich einlogge 6 wanteds ?
Befehl Suocmd:su(playerid,params[])
{
if(!IstSpielerInFraktion(playerid, 1))return SendClientMessage(playerid,ROT,"Du bist nicht in der Frak LSPD");
new pID,Sterne,Grund,Policetyp[MAX_PLAYER_NAME+1],Verhafteter[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, Policetyp, sizeof(Policetyp));
GetPlayerName(playerid, Verhafteter, sizeof(Verhafteter));
if(sscanf(params,"uis",pID,Sterne,Grund))return SendClientMessage(playerid,ROT,"USAGE: /su [PlayerID] [Wanteds] [Grund]");
if(IsPlayerConnected(pID))return SendClientMessage(playerid, ROT, "INVALID PlayerID");
GivePlayerWanted(playerid,Sterne);
SendClientMessage(playerid,Blau,"Du hast %i bekommen Grund:%s",Sterne,Grund);
SendPlayerMessageToPlayer(IstSpielerInFraktion(playerid, 1), Blau, "%s hat %s verhaftet Grund: &s Wanteds %i!",Policetyp,Verhafteter,Grund,Sterne);
return 1;
}stock Load Acc
stock LoadAccount(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, dini_Int(Spielerdatei, "Geld"));
Spieler[playerid][Level]=dini_Int(Spielerdatei, "Level");
Spieler[playerid][Skin]=dini_Int(Spielerdatei, "Skin");
Spieler[playerid][Adminlevel]=dini_Int(Spielerdatei, "Adminlevel");
Spieler[playerid][Fraktion]=dini_Int(Spielerdatei, "Fraktion");
Spieler[playerid][Tode]=dini_Int(Spielerdatei, "Tode");
Spieler[playerid][Morde]=dini_Int(Spielerdatei, "Morde");
Spieler[playerid][Wanteds]=dini_Int(Spielerdatei, "Wanteds");
Spieler[playerid][Leader]=dini_Int(Spielerdatei, "Leader");
format(Spieler[playerid][Name], MAX_PLAYER_NAME, "%s",dini_Get(Spielerdatei, "Name"));
SetPVarInt(playerid,"loggedin",1);
SetPlayerWantedLevel(playerid,Wanteds);
return 1;
}uund stock GivePlayerWanted
stock GivePlayerWanted(playerid,Float:WantedLevel)
{
new Float:wanted; GetPlayerHealth(playerid,wanted);
SetPlayerHealth(playerid,wanted+WantedLevel);
}help pls
-
Was soll der GivePlayerWanted Stock bedeuten?
Du nennst ihn GivePlayerWanted aber erhöst das Leben des Spielers ? -
oh xD was falsch gemacht
-