ohje ich war in C
[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
-
-
Danke @Kaliber
Hab ein neues Problem.
Bei der Fraktion Terroristen wird ein unterfeld vom Dialog nicht geöffnet welcher aber bei Bundeswehr und SAPD aufgeht.
Aus dem Befehl /frakeinstellungen listitem Lohn festsetzen
if(listitem == 2) { new String[1500] = "ID\tName\tRang\tLohn"; for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(!IsPlayerConnected(i) || SpielerInfo[i][Fraktion] != SpielerInfo[playerid][Fraktion]) continue; format(String, sizeof(String),"%s\n%d\t%s\t%d\t%d$",String,i,SpielerName(i),SpielerInfo[i][Rang],SpielerInfo[i][Lohn]); } ShowPlayerDialog(playerid, FrakEinstell3, DIALOG_STYLE_TABLIST_HEADERS,"{FF6347}Lohn",String,"Ok",""); } -
Das sieht eigentlich richtig aus...
Wie hast du den FrakEinstell3 definiert?
und am besten printest du dir mal den string
-
Code
Alles anzeigenforward WantedHacken(playerid); public WantedHacken(playerid) { new pID, string[128], wanteds; OnWantedChange(pID, Spieler[pID][pWanteds], (Spieler[pID][pWanteds]-wanteds)); Spieler[pID][pWanteds] -= wanteds; if(Spieler[pID][pWanteds] <= 0)Spieler[pID][pWanteds] = 0; UpdateWantedTD(pID); format(string, sizeof(string), "Dein aktuelles Wanted Level: %d", Spieler[pID][pWanteds]); SendClientMessage(pID, COLOR_YELLOW, string); Spieler[playerid][pWheelTime] = 0; return 1; }
weiß jemand warum keine Wanteds nach einer 30 Sekunden gelöscht werden?
-> Kann man das Einstellen wen ein Kunde der Wanteds hat im Auto ist das man es für ihn löscht? egal wv Kunden im Auto sind -
weiß jemand warum keine Wanteds nach einer 30 Sekunden gelöscht werden?
Du deklarierst pID weißt aber keinen Wert zu.
Sprich somit ist pID immer 0...
Kann man das Einstellen wen ein Kunde der Wanteds hat im Auto ist das man es für ihn löscht? egal wv Kunden im Auto sind
Ehh natürlich:
-
Du deklarierst pID weißt aber keinen Wert zu.
Sprich somit ist pID immer 0...Ehh natürlich:
wie benutze ich den stock
Code
Alles anzeigenforward WantedHacken(playerid); public WantedHacken(playerid) { new pID, string[128], wanteds; format(string, sizeof(string), "Dein aktuelles Wanted Level: %d", Spieler[pID][pWanteds]); SendClientMessage(pID, COLOR_YELLOW, string); Spieler[playerid][pWheelTime] = 0; return 1; } stock ClearWantedsInVehicle(veh) { for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !IsPlayerInVehicle(i,veh)) continue; SetPlayerWantedLevel(i, 0); } }
So sieht der Code erstmal aus habe das -wanted erstmal gelöscht
-
Beitrag von Dachdecker ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Bis wohin Funktioniert es denn ?
-
das Lohn setzen ist teil von einem großen Dialog wo mehrere Sachen drinne stehen.
Wenn ich in dem dialog dann auf Lohn festsetzen klicke, dann passiert nichts aber bei Bundeswehr und SAPD schon
-
Code
Alles anzeigenCMD:hacken(playerid, params[]) { new string[128]; if(Spieler[playerid][pFraktion] != 10) return SendClientMessage(playerid, COLOR_GREY, "Du bist nich bei der Fraktion!"); { SetTimer("WantedHacken", 30000, 0); Spieler[playerid][pWheelTime] = 30; if(Spieler[playerid][pWheelTime] > 1) { Spieler[playerid][pWheelTime] --; format(string, sizeof(string), "~b~Hackvorgang: ~w~%d", Spieler[playerid][pWheelTime]); GameTextForPlayer(playerid, string, 3600, 6); } } return 1; } forward WantedHacken(playerid); public WantedHacken(playerid) { new pID, string[128], wanteds; OnWantedChange(pID, Spieler[pID][pWanteds], (Spieler[pID][pWanteds]-wanteds)); Spieler[pID][pWanteds] -= wanteds; format(string, sizeof(string), "Dein aktuelles Wanted Level: %d", Spieler[pID][pWanteds]); SendClientMessage(pID, COLOR_YELLOW, string); Spieler[playerid][pWheelTime] = 0; return 1; } stock ClearWantedsInVehicle(veh) { for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !IsPlayerInVehicle(i,veh)) continue; SetPlayerWantedLevel(i, 0); } }
Könnte das So Funktioniren das es für jeden der beim Wheelman im Auto sitzt die Wanteds nach 30 Sekunden einer Gelöscht wird?
Oder liege ich da wider falsch :)? -
Wo ist der Fehler?
Bekomme Error in der Zeile mit dem "IsPlayerInRangeOfPoint"C
Alles anzeigenfoward InitDoors(); new blastOpenR[]= {float:207.7000000,float:1875.5000000,float:13.9000000}; new blastOpenL[]= {float:220.0000000,float:1875.5000000,float:13.9000000}; new blastLockedR[]={float:215.8999900,float:1875.5000000,float:13.9000000}; new blastLockedL[]={float:211.8999900,float:1875.5000000,float:13.9000000}; ew blastSpeed= float:0.5;//Movement speed of Area51 blastdoors new dblastDoor[]= {float:(abs(blastOpenR[1])-(blastOpenL[1])),float:(abs(blastOpenR[2]-blastOpenL[2])),float:(abs(blastOpenR[3]-blastOpenL[3]))}; InitDoors() { new i; :run { if(IsPlayerInRangeOfPoint([playerid],5,dblastDoor[1],dblastDoor[2],dblastDoor[3]) { if(gPlayerTeamSelection[playerid] == SPAWN_TEAM1) { if(!IsObjectMoving(blastDoorR || blastDoorL)) { MoveObject(blastDoorL,blastOpenL[1],blastOpenL[2],blastOpenL[3],blastSpeed) MoveObject(blastDoorR,blastOpenR[1],blastOpenR[2],blastOpenR[3],blastSpeed) } } else { if(!IsObjectMoving(blastDoorR || blastDoorL)) { MoveObject(blastDoorR,blastLockedR[1],blastLockedR[2],blastLockedR[3],blastSpeed) MoveObject(blastDoorL,blastLockedL[1],blastLockedL[2],blastLockedL[3],blastSpeed) } } } pause (1000); } goto run; return 1; }
-
Was für ein Fehler bekommst du ?
//edit
Änder
if(IsPlayerInRangeOfPoint([playerid],5,dblastDoor[1],dblastDoor[2],dblastDoor[3])
zu
if(IsPlayerInRangeOfPoint(playerid,5,dblastDoor[1],dblastDoor[2],dblastDoor[3]) -
@Sub Royal
1. pause kannst du definitiv nicht benutzen. Der Server läuft in einem einzigen Thread. Nichts würde mehr funktionieren.2. Es wird davon abgeraten goto zu benutzen, keine ahnung warum aber es soll wohl seinen grund haben.
-
[list=1][*]Wheelman = GangZoneCreate(1905.4333,-1342.0233,1174.9628,-1888.9697);
[*]if(IsPlayerInArea(playerid, 1905.4333,-1342.0233,1174.9628,-1888.9697) == 1)
[/list]Hey, hat jemand eine Ahnung warum er die Zone nicht annimt?
Codestock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) { return 1; } return 0; }
wen ich das == 1 weg mache funktioniert auch nicht warum?
-
Ändere die Koordinaten von
1905.4333,-1342.0233,1174.9628,-1888.9697
Zu
1174.9628,-1888.9697,1905.4333,-1342.0233 -
Ändere die Koordinaten von
1905.4333,-1342.0233,1174.9628,-1888.9697
Zu
1174.9628,-1888.9697,1905.4333,-1342.0233Code
Alles anzeigenCMD:hacken(playerid, params[]) { new string[128]; if(Spieler[playerid][pFraktion] != 10) return SendClientMessage(playerid, COLOR_GREY, "Du bist nich bei der Fraktion!"); if(IsPlayerInArea(playerid, 1174.9628,-1888.9697,1905.4333,-1342.0233) == 1) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Zone!"); { SetTimer("WantedHacken", 30000, 0); Spieler[playerid][pWheelTime] = 30; if(Spieler[playerid][pWheelTime] > 1) { Spieler[playerid][pWheelTime] --; format(string, sizeof(string), "~b~Hackvorgang: ~w~%d", Spieler[playerid][pWheelTime]); GameTextForPlayer(playerid, string, 3600, 6); } } return 1; } forward WantedHacken(playerid); public WantedHacken(playerid) { new pID, string[128], wanteds; OnWantedChange(pID, Spieler[pID][pWanteds], (Spieler[pID][pWanteds]-wanteds)); Spieler[pID][pWanteds] -= wanteds; format(string, sizeof(string), "Dein aktuelles Wanted Level: %d", Spieler[pID][pWanteds]); SendClientMessage(pID, COLOR_YELLOW, string); Spieler[playerid][pWheelTime] = 0; return 1; } stock ClearWantedsInVehicle(veh) { for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !IsPlayerInVehicle(i,veh)) continue; SetPlayerWantedLevel(i, 0); } }
Bei mir löscht er keine Wanteds für den Kunden? ich versteh nicht warum?
-
Du musst den Timer auch für den Spieler übergeben, du weißt ihm gar kein Wert zu.
CMD:hacken(playerid, params[])
{
new string[128];
if(Spieler[playerid][pFraktion] != 10) return SendClientMessage(playerid, COLOR_GREY, "Du bist nich bei der Fraktion!");
if(IsPlayerInArea(playerid, 1174.9628,-1888.9697,1905.4333,-1342.0233) == 1) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Zone!");
{
SetTimerEx("WantedHacken", 3000, 0, "i", playerid);
Spieler[playerid][pWheelTime] = 30;
if(Spieler[playerid][pWheelTime] > 1)
{
Spieler[playerid][pWheelTime] --;
format(string, sizeof(string), "~b~Hackvorgang: ~w~%d", Spieler[playerid][pWheelTime]);
GameTextForPlayer(playerid, string, 3600, 6);
}
}
return 1;
} -
Wo ist der Fehler?
Der Code ist voller Fehler...
es gibt kein float: wenn dann nur Float: aber das braucht man nur an die Variable setzen, nicht an die Zahlen in Pawn, da es kein double gibt.
Du hast viele Klammern & viele Semikolons vergessen oder falsch gesetzt oder unnütze [ ] gesetzt..Desweiteren ist pause, genauso wie goto schwachsinn...
Zudem war playerid gar nicht deklariert...
Also schreib den Code mal so:
C
Alles anzeigenforward InitDoors(); new Float:blastOpenR[]= {207.7000000,1875.5000000,13.9000000}; new Float:blastOpenL[]= {220.0000000,1875.5000000,13.9000000}; new Float:blastLockedR[]={215.8999900,1875.5000000,13.9000000}; new Float:blastLockedL[]={211.8999900,1875.5000000,13.9000000}; stock const Float:blastSpeed= 0.5; new Float:dblastDoor[3]; public OnGameModeInit() { dblastDoor[0] = floatabs(blastOpenR[0]-blastOpenL[0]); dblastDoor[1] = floatabs(blastOpenR[1]-blastOpenL[1]); dblastDoor[2] = floatabs(blastOpenR[2]-blastOpenL[2]); SetTimer("InitDoors", 1000, 1); //So wird das jede Sekunde aufgerufen return 1; } public InitDoors() { for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !IsPlayerInRangeOfPoint(i,5,dblastDoor[0],dblastDoor[1],dblastDoor[2])) continue; if(gPlayerTeamSelection[i] == SPAWN_TEAM1) { if(!IsObjectMoving(blastDoorR) || blastDoorL) { MoveObject(blastDoorL,blastOpenL[0],blastOpenL[1],blastOpenL[2],blastSpeed); MoveObject(blastDoorR,blastOpenR[0],blastOpenR[1],blastOpenR[2],blastSpeed); } } else { if(!IsObjectMoving(blastDoorL) || blastDoorR) { MoveObject(blastDoorR,blastLockedR[0],blastLockedR[1],blastLockedR[2],blastSpeed); MoveObject(blastDoorL,blastLockedL[0],blastLockedL[1],blastLockedL[2],blastSpeed); } } } return 1; }
-
Code
if(IsPlayerInArea(playerid, 1218.0134,-1951.7229,1929.2036,-1959.6438) == 1) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Zone!");
Codestock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) { return 1; } return 0; }
Codeif(Spieler[playerid][pFraktion] == 10) { Wheelman = GangZoneCreate(1929.2036,-1959.6438,1218.0134,-1951.7229); GangZoneShowForPlayer(playerid, Wheelman, 0x33CCFF65); }
Er sagt mir immer noch ich bin nicht in der Zone habe es auch versucht das == 1 zu löschen
-
Code
if(IsPlayerInArea(playerid, 1218.0134,-1951.7229,1929.2036,-1959.6438) == 1) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Zone!");
Codestock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) { return 1; } return 0; }
Codeif(Spieler[playerid][pFraktion] == 10) { Wheelman = GangZoneCreate(1929.2036,-1959.6438,1218.0134,-1951.7229); GangZoneShowForPlayer(playerid, Wheelman, 0x33CCFF65); }
Er sagt mir immer noch ich bin nicht in der Zone habe es auch versucht das == 1 zu löschen
Versuchs mal so:
if(!IsPlayerInArea(playerid, 1218.0134,-1951.7229,1929.2036,-1959.6438) ) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Zone!");