[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
  • Bitte um Rat

    Hier ein kleiner Rat :love:


    ast2ufdyxkb1.png


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

  • Danke dir schonmal, das hat geholfen :D
    Ich wollte es jetzt noch ein bisschen uebertreiben


    Wenn der Spieler Linke Pfeiltaste oder Rechtepfeiltaste drueckt, soll bei Links der Spieler den naechsten Spieler mit kleinerer Spieler ID spectaten, als der Aktuell, und bei Rechts der mit der groesseren ID.


    Folgendes habe ich dazu bisher





    Ich hoffe das ist nicht zuviel fuer kleine Scripting Fragen :D
    Mir viele nur der Weg ein die ID vom aktuellen Spieler zu speichern, und dann alle Spieler durchzugehen, und um zu schauen ob der naechste gueltige Spieler dann eine ID > aktuelle ID hat bzw < und wenn nicht zu continuen;


    Das ist mein jetziges Konstrukt von dem ich mir erhoffe dass es irgendwie im Ansatz klappt


    2 Mal editiert, zuletzt von Sub Royal ()

  • Das ist mein jetziges Konstrukt von dem ich mir erhoffe dass es irgendwie im Ansatz klappt

    Machs dir nicht so kompliziert.


    Du musst das alles mal ein bisschen modularer schreiben xD


    Also mal kurz nebenbei, du musst unter OnPlayerUpdate nicht prüfen ob der Spieler connected ist..weil dieser Callback nur für Spieler aufgerufen wird, die online sind xD


    Versuchs mal so:



    //Edit: Parameter...xD

    ast2ufdyxkb1.png


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

  • Boah danke es klappt :D
    Habe gedacht es sei komplexer.



    Vielen Dank dafuer!!! Aber wie funktioniert das Ampersand & Symbol in PAWN eigentlich? Identisch wie in C?


    Nochwas:


    Gibt es irgendwelche einfachen Anticheat Loesungen die man per Include, FS oder wie auch immer direkt einbauen kann, und fertig?


    Weiterhin will ich mein Report System so anpassen, dass wenn man einen Report abruft als Admin, immer der letzte angezeigt wird, also wie in einer Queue, aber leider scheinen Queues in PAWN nicht realisierbar zu sein.


    Gibts da ne andere Loesung? Vielleicht ein Array der groesse MAX_PLAYERS, und das dann von vorne nach hinten mit strings auffuellen?

  • Aber wie funktioniert das Ampersand & Symbol in PAWN eigentlich? Identisch wie in C?

    Wenn du damit die Binary UND-Operation meinst, dann ja wie in C.


    Gibt es irgendwelche einfachen Anticheat Loesungen die man per Include, FS oder wie auch immer direkt einbauen kann, und fertig?

    Kommt darauf an..für was du ein Anti-Cheat haben magst..aber theoretisch wäre das über gute Hooks realisierbar, aber es gibt kein öffentliches :)


    Gibts da ne andere Loesung

    Also entweder verkehrt herum einfügen.


    Oder verkehrt herum ausgeben :)


    C
    new Reports[][] = {"0", "1", "2", "3"};
    
    
    for(new i=sizeof(Reports)-1; i!=-1; i--) print(Reports[i]);
    //Gibt 3 2 1 0 aus :)

    ast2ufdyxkb1.png


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

  • Kurze Frage, habe einen Dialog mit einem String.
    Ist es mir irgendwie möglich den Dialog anzeigen zu lassen, ohne den String wieder jedesmal zu formatieren?

    Code dazu;

    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString), "Hier befindet sich der Login %s. \n\n(Bitte beim Entwickler melden, dieser Dialog muss geändert werden!)", GetName(playerid));
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""#SERVER_NAME": Login", DialogString, "Bestätigen", "Verlassen");

  • Hey,
    Wie kann ich, wenn ich jetzt zB von einem Namen nur einen Teil kenne (Sagen wir von "Edward_Murphy" habe ich nur "rd_Mu"), in meiner MySQL DB nach diesem Teil suchen und mir alle Namen mit diesem Teil anzeigen lassen?

    Dafür kannst du LIKE benutze.
    https://dev.mysql.com/doc/refm…comparison-functions.html

    SQL
    SELECT * FROM tabellenname WHERE name LIKE '%$name%'
  • probiere es mal so :)


    Funktioniert immer noch nicht ;(?


  • Warum gibt es eigentlich den ganzen Stuff mit GetClientVersion etc.?


    Weil man kann ja nur mit der Client Version verbinden die auch der entsprechenden Server Version entspricht oder nicht?
    Oder kann man mit 0.3.7 auf nen 0.3a Server verbinden? Wenn nicht machen die ganzen Funktionen mit den Client Versionen ja nicht wirklich viel sinn

  • Beitrag von MGPK-1323 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Stehe mal wieder auf der Leitung:
    Das Auto wird erstellt und auch ein Eintrag in der Liste, aber überall wird 0 eingetragen. Aber warum?
    cmd:fcreate(playerid,params[])
    {
    new modelid,frakid,Float:PosX2,Float:PosY2,Float:PosZ2,Float:PosA2,color1,color2;
    if (SpielerInfo[playerid][uAdmin] <= 2) return SendClientMessage(playerid,FARBE_KEINERFOLG,"[FRAKTIONSCAR]: Du bist kein Admin !");
    if(sscanf(params,"dddd",modelid,frakid,color1,color2)) return SendClientMessage(playerid,0x00FF00FF,"Benutze: /fcreate [Model ID] [Fraktion ID] [Color 1] [Color 2])");
    new query[128];
    new fc = FreeFrakCheck();
    mysql_format(handle,query,sizeof(query),"INSERT INTO frakcars (id) VALUES ('%d')",fc);
    mysql_pquery(handle,query);
    GetPlayerPos(playerid,PosX2,PosY2,PosZ2);
    GetPlayerFacingAngle(playerid,PosA2);
    FractionCars[fc][fModelID] = modelid;
    FractionCars[fc][fPos][0] = PosX2;
    FractionCars[fc][fPos][1] = PosY2;
    FractionCars[fc][fPos][2] = PosZ2;
    FractionCars[fc][fPos][3] = PosA2;
    FractionCars[fc][fCol][0] = color1;
    FractionCars[fc][fCol][1] = color2;
    FractionCars[fc][fFraction] = frakid;
    FractionCars[fc][fCarid] = CreateVehicle(FractionCars[fc][fModelID],FractionCars[fc][fPos][0],FractionCars[fc][fPos][1],FractionCars[fc][fPos][2],FractionCars[fc][fPos][3],FractionCars[fc][fCol][0],FractionCars[fc][fCol][1],-1);
    SendClientMessage(playerid,FARBE_GELB,"[FRAKTIONSCAR]: Du hast das Auto erfolgreich erstellt!");
    mysql_format(handle,query,sizeof(query),"UPDATE `frakcars` SET `Ersteller` = '%s'",PlayerName(playerid));
    //SendClientMessage(playerid,COLOR_YELLOW,"[FRAKTIONSCAR]: Vergiss aber nicht es später mit /fpark umzuparken!");
    //SendClientMessage(playerid,COLOR_YELLOW,"[INFO]: Für weitere Befehle verwende /fcarinfo");
    PutPlayerInVehicle(playerid,FractionCars[fc][fCarid],0);
    SaveFractionCars();
    return 1;
    }
    stock FreeFrakCheck()
    {
    new Cache:result;
    new bedin[128],query[128];
    for(new i;i<MAX_FRACTION_CARS;i++)
    {
    format(bedin,sizeof(bedin),"id='%i'",i);
    format(query,sizeof(query),"SELECT * FROM frakcars WHERE %s",bedin);
    result = mysql_query(handle,query);
    result = cache_save();
    if(cache_num_rows()==0) return i;
    }
    cache_delete(result);
    return 0;
    }
    stock CreateFraktionsVehicle(vehiclemodelid,fraktid,Float:xpos,Float:ypos,Float:zpos,vworld,interior,Float:angle,FrColor1,FrColor2,respawntime,preis)
    {
    new queryone[450],querytwo[300],mainquery[800];
    new fv;while(fv<MAX_FRACTION_CARS)
    {
    if(Fahrzeug[fv][Fraktion] == 0)
    {
    Fahrzeug[fv][Carkey] = fv;
    Fahrzeug[fv][Fraktion] = fraktid;
    Fahrzeug[fv][FraktionsRang] = 0;
    Fahrzeug[fv][modelid] = vehiclemodelid;
    Fahrzeug[fv][Colour1] = FrColor1;//FVehicleInfo[fraktid-1][FColor1];
    Fahrzeug[fv][Colour2] = FrColor2;//FVehicleInfo[fraktid-1][FColor2];
    Fahrzeug[fv][Paintjob] = -1;
    Fahrzeug[fv][posx] = xpos;
    Fahrzeug[fv][posy] = ypos;
    Fahrzeug[fv][posz] = zpos;
    Fahrzeug[fv][posa] = angle;
    Fahrzeug[fv][Interior] = interior;
    Fahrzeug[fv][VirtualWorld] = vworld;
    Fahrzeug[fv][Spoiler] = 0;
    Fahrzeug[fv][Wheels] = 0;
    Fahrzeug[fv][Nitro] = 0;
    Fahrzeug[fv][Roof] = 0;
    Fahrzeug[fv][Hood] = 0;
    Fahrzeug[fv][Sideskirt] = 0;
    Fahrzeug[fv][Lamps] = 0;
    Fahrzeug[fv][Exhaust] = 0;
    Fahrzeug[fv][Stereo] = 0;
    Fahrzeug[fv][Hydraulics] = 0;
    Fahrzeug[fv][VentRight] = 0;
    Fahrzeug[fv][VentLeft] = 0;
    Fahrzeug[fv][FrontBumper] = 0;
    Fahrzeug[fv][RearBumper] = 0;
    Fahrzeug[fv][Preis] = preis;
    Fahrzeug[fv][HP] = 1000.0;
    Fahrzeug[fv][Tank] = VehicleInfo[vehiclemodelid-400][vtankvolumen];
    format(Fahrzeug[fv][Nummernschild],64,"SA-%s-%i",FVehicleInfo[fraktid-1][FNumbPlate],Fahrzeug[fv][Carkey]);
    Fahrzeug[fv][Vehicle] = CreateVehicleEx(vehiclemodelid,xpos,ypos,zpos,angle,FrColor1,FrColor2,respawntime,false);
    LinkVehicleToInterior(Fahrzeug[fv][Vehicle],Fahrzeug[fv][Interior]);
    SetVehicleVirtualWorld(Fahrzeug[fv][Vehicle],Fahrzeug[fv][VirtualWorld]);
    SetVehicleNumberPlate(Fahrzeug[fv][Vehicle],Fahrzeug[fv][Nummernschild]);
    SetVehicleHealth(Fahrzeug[fv][Vehicle],Fahrzeug[fv][HP]);
    GetVehicleParamsEx(Fahrzeug[fv][Vehicle],engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(Fahrzeug[fv][Vehicle],engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
    Fahrzeug[fv][Abgeschlossen] = 1;
    format(queryone,sizeof(queryone),"INSERT INTO `"#DATENBANKTAG"_fraktion_vehicles` (`id`,`Fraktion`,`Rang`,`modelid`,`Farbe1`,`Farbe2`,`Paintjob`,`HP`,`posx`,`posy`,`posz`,`posa`,`Interior`,`VirtualWorld`,`Abgeschlossen`,`Abgeschleppt`,`AbgeschlepptPreis`,`AbgeschlepptGrund`,`Nummernschild`,`Spoiler`,`Hood`,`Roof`,`Sideskirt`,`Lamps`,`Nitro`,`Exhaust`,`Wheels`,`Stereo`,`Hydraulics`,`FrontBumper`,`RearBumper`,`VentRight`,`VentLeft`,`KaufPreis`,`Motorschaden`,`Tank`)");
    format(querytwo,sizeof(querytwo),"VALUES ('%d','%d','%d','%d','%d','%d','%d','%f','%f','%f','%f','%f','%d','%d','%d','0','0','NONE','%s','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','0','%f')",
    Fahrzeug[fv][Carkey],Fahrzeug[fv][Fraktion],Fahrzeug[fv][FraktionsRang],Fahrzeug[fv][modelid],FrColor1,FrColor2,Fahrzeug[fv][Paintjob],Fahrzeug[fv][HP],Fahrzeug[fv][posx],Fahrzeug[fv][posy],Fahrzeug[fv][posz],Fahrzeug[fv][posa],Fahrzeug[fv][Interior],Fahrzeug[fv][VirtualWorld],Fahrzeug[fv][Abgeschlossen],Fahrzeug[fv][Nummernschild],Fahrzeug[fv][Spoiler],Fahrzeug[fv][Hood],Fahrzeug[fv][Roof],Fahrzeug[fv][Sideskirt],Fahrzeug[fv][Lamps],
    Fahrzeug[fv][Nitro],Fahrzeug[fv][Exhaust],Fahrzeug[fv][Wheels],Fahrzeug[fv][Stereo],Fahrzeug[fv][Hydraulics],Fahrzeug[fv][FrontBumper],Fahrzeug[fv][RearBumper],Fahrzeug[fv][VentRight],Fahrzeug[fv][VentLeft],Fahrzeug[fv][Preis],Fahrzeug[fv][Tank]);
    format(mainquery,sizeof(mainquery),"%s%s",queryone,querytwo);
    mysql_function_query(MySqlConnection,mainquery,false,"","");
    SaveFractionCars();
    return fv;
    }
    }
    return 1;
    }
    cmd:fpark(playerid,params[])
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    new fc;while(fc<MAX_FRACTION_CARS)
    {
    if(FractionCars[fc][fModelID] >= 400 && FractionCars[fc][fModelID] <= 611)
    {
    if(GetPlayerVehicleID(playerid) == FractionCars[fc][fCarid])
    {
    if(SpielerInfo[playerid][uFMember] == FractionCars[fc][fFraction] && SpielerInfo[playerid][uFRang] >= 7 || IsPlayerAdmin(playerid))
    {
    new Float:fX,Float:fY,Float:fZ,Float:fA;
    GetVehiclePos(FractionCars[fc][fCarid],fX,fY,fZ),GetVehicleZAngle(FractionCars[fc][fCarid],fA);
    FractionCars[fc][fPos][0]=fX;
    FractionCars[fc][fPos][1]=fY;
    FractionCars[fc][fPos][2]=fZ;
    FractionCars[fc][fPos][3]=fA;
    SendClientMessage(playerid,FARBE_GELB,"[FRAKTIONSCAR]: Du hast das Fraktionsfahrzeug erfolgreich umgeparkt.");
    return SaveFractionCars();
    }
    else
    {
    return SendClientMessage(playerid,FARBE_ROT,"[FRAKTIONSCAR]: Du bist dazu nicht berechtigt.");
    }
    }
    }
    fc++;
    }
    return SendClientMessage(playerid,FARBE_KEINERFOLG,"[FRAKTIONSCAR]: Du sitzt in keinem Fraktionsfahrzeug.");
    }
    return SendClientMessage(playerid,FARBE_KEINERFOLG,"[FRAKTIONSCAR]: Du sitzt in keinem Fahrzeug oder bist nicht der Fahrer.");
    }

  • public OnPlayerDeath(playerid, killerid, reason)
    {
    if(KrankenhausAktiv == 1 && SpielerInfo[playerid][AdminLevel] <= 6)
    {
    SpielerInfo[playerid][IstImKrankenhaus] = 1;
    }
    return 1;
    }


    ich erstelle keine Objekte beim sterben. das ist wohl von SAMP aus.
    Mal ist es eine Flasche, mal eine qualmende Zigarette

    Mit freundlichen Grüßen,
    Dachdecker

  • public OnPlayerDeath(playerid, killerid, reason){ if(KrankenhausAktiv == 1 && SpielerInfo[playerid][AdminLevel] <= 6) { SpielerInfo[playerid][IstImKrankenhaus] = 1; } return 1;}


    ich erstelle keine Objekte beim sterben. das ist wohl von SAMP aus.
    Mal ist es eine Flasche, mal eine qualmende Zigarette

    Ah jetzt weiss ich was du meinst. Es wird kein Pickup erstellt sondern der Skin hat die Objekte in der Hand?