[SAMMELTHREAD] Kleine Scripting Fragen

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
  • Hier, jetzt haste ein dynamisches Zoll System:



    Jetzt musst du nur oben in dein Array ein Zolltor hinzufügen und fertig :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich kann das nicht benutzen, das andee "Zolltor" hat eine andere Objektid. Das 2. Tor hat eine andere Objektid, schlimm?

    Code
    (177) : error 008: must be a constant expression; assumed zero
    (179) : error 010: invalid function or declaration
    (2425) : warning 204: symbol is assigned a value that is never used: "Zolltor2"
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    2 Errors.


    Code
    Zolltor1 = CreateDynamicObject(968, 2231.835205, -2213.075439, 13.255665, 0.000000, 270, 135.000000, -1, -1, -1, 300.00, 300.00);
    	Zolltor2 = CreateDynamicObject(9093, 2178.190185, -2254.855224, 15.883447, 0.000000, 0.000000, 135.000000, -1, -1, -1, 300.00, 300.00);

    //EDIT
    ich will noch bei Zolltor2 ein Ingamesound abspielen. Und sind ja nur die 2 Tore lohnt sich das, dafür es dynamisch zu machen?

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Ich kann das nicht benutzen, das andee "Zolltor" hat eine andere Objektid. Das 2. Tor hat eine andere Objektid, schlimm?

    Nein ist es nicht.


    Sry hab vergessen, dass das so in Pawn ja nicht geht, schreib es mal so:



    und die Zuweisung mit den Objekten machst du dann so:



    ZollTor[0] = CreateDynamicObject(...); //da wo du jetzt ZollTor1 hast
    //und dann eben das selbe nochmal für ZollTor[1]

    ich will noch bei Zolltor2 ein Ingamesound abspielen.

    Nur da, oder bei beiden?


    Im Endeffekt, wenn du wirklich nur 2 ZollTore haben willst...ist das System n bisschen over...aber im Endeffekt spielt das jetzt keine Rolle.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Mal eine Kurze frage habe nun ein fehler bei mir endreckt.


    format(string,sizeof(string),"%s{FFFFFF}: %s", a_rang[sort[i][0]-1], GetName([sort[i][1]]);




    C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(23630) : warning 225: unreachable code
    C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : error 029: invalid expression, assumed zero
    C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : warning 215: expression has no effect
    C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : error 001: expected token: ";", but found "]"
    C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : error 029: invalid expression, assumed zero
    C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : fatal error 107: too many error messages on one line


    Komisch warum spinnt das ?

  • format(string,sizeof(string),"%s{FFFFFF}: %s", a_rang[sort[ i][0]-1], GetName([sort[i ][1]]);

    Weil da zu viele komische Klammern sind und eine zu wenig xD


    format(string,sizeof(string),"%s{FFFFFF}: %s", a_rang[sort[i][0]-1], GetName(sort[i][1]));

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Danke und Frohe Weihnachten :D


    Habs gerade gesehn und mal verglichen :D


    Ich wollte meine gekochten Fische anzeigen lassen aber iwie funktioniert das nicht :(


    //Funktioniert nicht


    //Funktioniert


  • Naja wen ich Fische Koche funktioniert es nicht mehr Log:



    [debug] Run time error 4: "Array index out of bounds"
    [debug] Attempted to read/write array element at negative index -1
    [debug] AMX backtrace:
    [debug] #0 001400dc in public ocmd_cooked (0, 50662360) from Reallife.amx
    [debug] #1 native CallLocalFunction () from samp-server.exe
    [debug] #2 00007a2c in public OnPlayerCommandText (0, 50662328) from Reallife.amx


    Der Index ist normal -1 wen er keine Besitzt normal.
    Naturlich wen er welche kocht wird das geändert.

  • Hi hab ein problem auf einmal wird der string vom tacho nicht angezeigt.
    Nur die durchsichtige box.
    Wenn ich in ein Fahrzeug ein steige dann kommt die BOX wenn ich aussteige geht sie auch wieder weg aber die box erscheint nur ohne string


    new Text:Tacho[MAX_PLAYERS];
    forward SekundenTimer6();



    Funktion
    if(newstate == PLAYER_STATE_DRIVER){
    gLastCar[playerid] = GetPlayerVehicleID(playerid);
    /*format(string,sizeof(string),"~y~Name: \t~w~%s~n~~g~KM/H:\t~w~ 0~n~~g~Benzin:\t~w~ %d", VehNames[GetVehicleModel(GetPlayerVehicleID(playerid))-400], Gas[GetPlayerVehicleID(playerid)]);
    TextDrawShowForPlayer(playerid, Tacho[playerid]);*/
    format(string,sizeof(string),"~w~Geschw: \t~g~0 km/h ~n~~w~Benzin:\t~g~ %d%%~n~~w~Fahrzeug:\t~p~ %s",Gas[GetPlayerVehicleID(playerid)],VehNames[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
    TextDrawShowForPlayer(playerid, Tacho[playerid]);
    new newcar = GetPlayerVehicleID(playerid);
    new typ = IsAutohausCar(newcar);
    new GATyp = IsGangAutohausCar(newcar);
    if(GetVehicleModel(newcar) == 447 || GetVehicleModel(newcar) == 425 || GetVehicleModel(newcar) == 432)
    {
    if(IsACop(playerid) && OnDuty[playerid] == 1 || PlayerInfo[playerid][pAdminOnDuty] == 1)
    {
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Du kannst in dieses Fahrzeug nicht einsteigen, du wurdest gekickt");
    Kick(playerid);
    }
    }
    public SekundenTimer6()
    {
    new string[850],
    Float:maxspeed = 200.0,
    playername[MAX_PLAYER_NAME],
    value,
    Float:xX,
    Float:yY,
    Float:zZ,
    Float:X,
    Float:Y,
    Float:Z;
    ForAllPlayers(i){if(IsPlayerConnected(i) && gPlayerLogged[i] && !IsPlayerNPC(i) && AFKModus[i] == 0){
    new VID = GetPlayerVehicleID(i);
    if(IsPlayerInAnyVehicle(i)){
    GetVehiclePos(VID, xX, yY, zZ);
    GetVehicleVelocity(VID, X, Y, Z);
    value = floatround(floatsqroot((X*X) + (Y*Y) + (Z*Z)) * 100 * 1.40);
    if(GetPlayerState(i) == 2){
    GetVehicleVelocity(GetPlayerVehicleID(i) ,X, Y, Z);
    value = floatround(floatsqroot((X*X) + (Y*Y) + (Z*Z)) * 100 * 1.40);
    if(value > maxspeed && PlayerInfo[i][pSQLID] != 1 && PlayerInfo[i][pSQLID] != 2){
    new tmpcar = GetPlayerVehicleID(i);
    if(!IsAPlane(tmpcar)){
    GetPlayerName(i, playername, sizeof(playername));
    format(string, sizeof(string), "AdmWarnung: %s(ID: %d) verdacht auf Speedhack, Km/h %d.", playername, i, value, i);
    SendAdminMessage(COLOR_KNALLROT, 1, string);
    }
    }
    }
    if(TakingLesson[i] == 2)
    {
    if(value > 75)
    {
    format(string,sizeof(string),"Du fährst zuschnell, bitte fahre Langsamer (70 km/h) %d/10 Strafpunkte",PlayerInfo[i][pStrafpunktefs]);
    SendClientMessage(i,COLOR_RED,string);
    PlayerInfo[i][pStrafpunktefs] ++;
    }
    if(PlayerInfo[i][pStrafpunktefs] == 10)
    {
    SendClientMessage(i,COLOR_KNALLROT,"Du hast die Prüfung nicht bestanden, Grund 10/10 Strafpunkte.");
    RemovePlayerFromVehicle(i);
    SetVehicleToRespawn(GetPlayerVehicleID(i));
    SetPlayerPos(i,1209.7849,-1724.6807,13.5632);
    CP[i] = 0;
    DisablePlayerCheckpoint(i);
    TakingLesson[i] = 0;
    }
    }
    if(IsABoat(VID) || IsAFahrrad(VID))
    {
    //format(string,sizeof(string),"~y~Name:\t\t~w~%s~n~~g~KM/H:\t\t~w~ %d", VehNames[GetVehicleModel(VID)-400], value);
    //format(string, sizeof(string), "~g~Km/h:~w~ %d",value);
    //TextDrawSetString(Tacho[i], string);
    format(string,sizeof(string),"~w~Geschw: \t\t~g~%d km/h ~n~~w~Fahrzeug:\t\t~p~ %s",value,VehNames[GetVehicleModel(VID)-400]);
    TextDrawSetString(Tacho[i], string);
    }
    else if(IsAPlane(VID))
    {
    new Float:cx,Float:cy,Float:cz;
    GetVehiclePos(VID,cx, cy, cz);
    format(string, sizeof(string), "%f",cz);
    //new Hohe = strval(string);
    //format(string,sizeof(string),"~y~Name:\t\t~w~%s~n~~g~KM/H:\t\t~w~ %d~n~~g~Hohe:\t\t~w~ %d ~g~Meter", VehNames[GetVehicleModel(VID)-400], value, Hohe);
    //format(string, sizeof(string), "~g~Km/h:~w~ %d ~g~Hohe:~w~ %d ~g~Meter",value,Hohe);
    //TextDrawSetString(Tacho[i], string);
    format(string,sizeof(string),"~w~Geschw: \t\t~g~%d km/h~n~~w~Fahrzeug:\t\t~p~ %s",value,VehNames[GetVehicleModel(VID)-400]);
    TextDrawSetString(Tacho[i], string);
    }
    else
    {
    new Speed[20];
    if(value >= 0 && value <= 75){Speed = "~g~";}
    if(value > 75){Speed = "~r~";}
    new Tank[20];
    if(Gas[VID] > 10 && Gas[VID] <= 20){Tank = "~y~";}
    if(Gas[VID] <= 10){Tank = "~r~";}
    if(Gas[VID] > 20){Tank = "~g~";}
    //format(string,sizeof(string),"~y~Name:\t\t~w~%s~n~~g~KM/H:\t\t%s %d~n~~g~Benzin:\t\t%s %d", VehNames[GetVehicleModel(VID)-400], Speed, value, Tank, Gas[VID]);
    //format(string, sizeof(string), "~g~Km/h:%s %d%~g~ Benzin:%s %d", Speed, value, Tank, Gas[VID]);
    //TextDrawSetString(Tacho[i], string);
    VehSpeed[VID] = value;
    format(string,sizeof(string),"~w~Geschw: \t~g~%s %d km/h~n~~w~Benzin: \t~g~%s %d%%~n~~w~Fahrzeug:\t~p~ %s",Speed, value, Tank, Gas[VID],VehNames[GetVehicleModel(VID)-400]);
    TextDrawSetString(Tacho[i], string);
    }
    }
    else
    {
    TextDrawHideForPlayer(i, Tacho[i]);
    }
    edit//


    mit dem befehl ändert sich der string:


    ocmd:testtacho(playerid,params[]){
    TextDrawSetString(Tacho[playerid], "Guck mal ich bin ein Tacho HIHI");
    return 1;
    }

    Einmal editiert, zuletzt von Abbas ()

  • Zitat von Kaliber

    Im Endeffekt, wenn du wirklich nur 2 ZollTore haben willst...ist das System n bisschen over...aber im Endeffekt spielt das jetzt keine Rolle.

    Ja ich möchte es da doch so lassen, ich habe dein Code für Beamten Tore benutzt, danke!
    Weil da werde ich viel mehr haben.


    Also wie mache ich das dann bei den jetzt so, ich möchte es hierbei simple lassen sind ja nur die 2 Tore.
    Und, dass ich dann auch einen Sound bei Zolltor2 einfügen kann :D

    Code
    Zolltor2 = CreateDynamicObject(9093, 2178.190185, -2254.855224, 15.883447, 0.000000, 0.000000, 135.000000, -1, -1, -1, 300.00, 300.00);
    RangeOfPoint = 2179.1099,-2255.8748,14.7734


    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • LOG:


    Verstehe nicht warum das nicht Funktioniert :/


    Code
    [debug] Run time error 4: "Array index out of bounds"
    [debug]  Attempted to read/write array element at negative index -255
    [debug] AMX backtrace:
    [debug] #0 0012bf84 in public ocmd_accept (0, 50487812) from Reallife.amx
    [debug] #1 native CallLocalFunction () from samp-server.exe
    [debug] #2 000079a4 in public OnPlayerCommandText (0, 50487756) from Reallife.amx




    Paket Akzeptieren:



    Ein Paket Verkaufen



  • @Dr.Frauenarzt: Du hast es mit den negativen Index. In Zeile 19 vom oberen Code setzt du pAccept[playerid] auf -255. In Zeile 22 versuchst du auf den Index zuzugreifen, der in der Variable pAccept[playerid] ist. Da diese -255 beträgt, greifst du auf einen negativen Index zu, den es in PAWN nicht gibt.


    Generell empfehle ich dir, in den PAWNO Ordner eine pawn.cfg zu erstellen und dort -d3 reinzuschreiben. Dadurch erhälst du von crashdetect detailiertere Fehlerinformationen. Für Testzwecke bzw. um Fehler zu finden eignet sich das durchaus.

  • habe ich eben gemacht die pawn.cfg erstellt und -d3 reingeschrieben.


    Laut der Infomation des Logs zeigt er mir die Zeile:


    PlayerInfo[pAcceptPaket[playerid]][pJobMoney] += pPaketPrice[playerid];


    Log:


    [debug] Run time error 4: "Array index out of bounds"[debug] Attempted to read/write array element at negative index -255[debug] AMX backtrace:[debug] #0 00150818 in public ocmd_accept (playerid=0, params[]=@02f7d1e8 "paket") at C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn:22887[debug] #1 native CallLocalFunction () from samp-server.exe[debug] #2 00008df0 in public OnPlayerCommandText (playerid=0, cmdtext[]=@02f7d1b0 "/accept paket") at C:\Users\Patrik\Desktop\Reallife\pawno\include\ocmd.inc:77



    //E:


    Logisch wen ich so unschau bin und lasse ihn das reseten vorher und dann gebe ich ihm das :D
    Fehler behoben

  • Hi hab ein problem auf einmal wird der string vom tacho nicht angezeigt.

    Entweder das Limit an Textdraws wurde erreicht, oder du löschst das Textdraw versehentlich irgendwo, das wären meine zwei ehesten Vermutungen.
    Ich tippe aber auf Grund der Nutzung von TextDrawCreate auf ersteres.


    Nutze für ein solches Vorhaben PlayerTextDraws.
    https://wiki.sa-mp.com/wiki/CreatePlayerTextDraw

  • Entweder das Limit an Textdraws wurde erreicht, oder du löschst das Textdraw versehentlich irgendwo, das wären meine zwei ehesten Vermutungen.
    Ich tippe aber auf Grund der Nutzung von TextDrawCreate auf ersteres

    hi hab gerde noch geschafft tzd danke,.


    es war zu lang und wurde solang geschrieben dann konnte man es nicht sehen.

  • es war zu lang und wurde solang geschrieben dann konnte man es nicht sehen.

    Stimmt, das ist auch noch eine Möglichkeit, gut, dass du dies selbst bereits herausgefunden hattest.
    Dennoch empfehle ich dir, PlayerTextDraws hierfür zu nutzen. Das kannst du ja mal bei Gelegenheit entsprechend umschreiben, wenn du Lust dazu hast, einfach um zu verhindern, dass du zu schnell an das TextDraw Limit kommst.

  • Guten Morgen zusammen,
    ich habe mal wieder eine Frage an euch. :)


    Ich habe eine Map mit dem "Fuzes Map Editor v3.0" Erstellt, nun habe ich aber dass Problem, dass er es in "CreateObject" und "SetObjectMaterial" ausgibt und nicht in "CreateDynamicObject" und "SetDynamicMaterial".
    Gibt es eine Webseite, Tool oder vielleicht ein Filterscript welches mit dies richtig ausgibt?
    Nutze dabei auch "SetObjectMaterialText".


    Einfach mit STRG + H und Ersetzen würde nicht klappen, da ich die Objekte nur in einer Virtuellen Welt erstellen lassen möchte.


    Mit freundlichen Grüßen,
    DomeTastisch.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen