[SAMMELTHREAD] Scripting Fragen.


  • [pwn] ocmd:a(playerid,params[])
    if(!IsPlayerAnAdmin(playerid))return SendClientMessage(playerid,Rot,"Du bist kein Administrator.");
    new string[128], text[128];
    new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid,pname,sizeof(pname));
    if(sscanf(params,"s",text))return SendClientMessage(playerid,Grau,"Benutze: /a [TEXT]");
    format(string,sizeof(string),"[Admin - %s]: %s",pname,text);
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(IsPlayerAnAdmin(i) && IsPlayerConnected(i)) { SendClientMessage(i,Geld,string); }
    }
    return 1;
    }[/pwn]
    ob so
    [pwn] if(IsPlayerAnAdmin(i) && IsPlayerConnected(i)) { SendClientMessage(i,Geld,string); }
    return 1;[/pwn]
    oder wie oben geht nicht. (Ja ich weiß ich bin ein Noob ^^)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Giulio ()

  • [pwn]ocmd:a(playerid,params[]) {
    if(!IsPlayerAnAdmin(playerid))
    return SendClientMessage(playerid,Rot,"Du bist kein Administrator.");
    new string[128], text[128], pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    if(sscanf(params,"s",text))return SendClientMessage(playerid,Grau,"Benutze: /a [TEXT]");
    format(string,sizeof(string),"[Admin - %s]: %s",pname,text);
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(IsPlayerAnAdmin(i) && IsPlayerConnected(i)) { SendClientMessage(i,Geld,string); }
    }
    return 1;
    }[/pwn]
  • Was ist hier Falsch?

    Code:
    [pwn]format(SQL, sizeof(SQL), "INSERT INTO spielerautos (Besitzer, Name, Modelid, PosX, PosY, PosZ, PosA) VALUES ('%s', '%s', '%i', '%f', '%f', '%f', '%f')", SpielerName(playerid), KaufAuto[akName], KaufAuto[i][akModelid], Autohaus[j][ahspawnx], Autohaus[j][ahspawny], Autohaus[j][ahspawnz], Autohaus[j][ahspawna]);
    mysql_query(SQL);[/pwn]

    Das sind die Positionen (X, Y, Z, R)
    [pwn]-1956.0542, 303.2367, 35.0244, 132.8802[/pwn]

    Aber in die Datenbank wird das geschrieben:

    SQL-Abfrage

    1. X = -1991 | Y = 244 | Z = 35 | R = 264


    Der Rest wird richtig gespeichert.
  • Also der enum sieht so aus
    [pwn]enum AutoHInfo //Autohausinfo
    {
    ahName[50],
    Float:ahposx,
    Float:ahposy,
    Float:ahposz,
    Float:ahspawnx,
    Float:ahspawny,
    Float:ahspawnz,
    Float:ahspawna,
    ahKasse,
    ahBesitzer[MAX_PLAYER_NAME]
    }[/pwn]

    Laden tu ichs so
    [pwn]PrivCar[vehicleid][vPoSx] = mysql_GetFloat("spielerautos", "PosX", "ID", str);[/pwn]
    Und speichern so:
    [pwn]mysql_SetFloat("spielerautos", "PoSx", PrivCar[vehicleid][vPoSx], "ID", str);[/pwn]

    das Autohaus lasse ich durch eine for schleife rausfinden also so:
    [pwn]for(new j = 0; j < sizeof Autohaus; j++)[/pwn]

    MfG

    (in der MySQL Tabelle steht auch "float"

    #e gerade den fehler gesehen
    [pwn]mysql_SetFloat("spielerautos", "PoSx", PrivCar[vehicleid][vPoSx], "ID", str);//das ist falsch (weil PoSx steht in der DB nicht)
    mysql_SetFloat("spielerautos", "PosX", PrivCar[vehicleid][vPoSx], "ID", str);//das ist richtig[/pwn]
    Jedoch wirds ja trotzdem falsch eingetragen ^^

    #e2
    Print sagt:
    [pwn]printf("X %f | Y %f | Z %f | R %f", Autohaus[j][ahspawnx], Autohaus[j][ahspawny], Autohaus[j][ahspawnz], Autohaus[j][ahspawna]);[/pwn]
    [15:18:48] X -1990.825195 | Y 244.299194 | Z 34.727401 | R 263.897186


    #e3
    Hier ein Dump der DB
    Dateien
    • spielerautos.zip

      (764 Byte, 242 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von [BlaZZeR]BirD ()

  • Ich hab den Fehler gefunden, der Fehler war das in der Tabelle bei "Length" eine "11" anstatt einer "0" standt. (musste die Tabelle ja leider Manuell angeben da das Script anscheinend nur 4 Tabellen auf einmal erstellen kann und nicht 6...)

    jedoch ein Problem, das Fahrzeug wird jetzt nicht nach einem Serverrestart erstellt.
    Code:
    [pwn]stock LoadPlayerCars()
    {
    new vehicleid = 1;
    while(vehicleid < MAX_KNOWING_VEHICLES)
    {
    format(str, sizeof str, "%i", vehicleid);
    format(PrivCar[vehicleid][vBesitzer], MAX_PLAYER_NAME, mysql_GetString("spielerautos", "Besitzer", "ID", str));
    format(PrivCar[vehicleid][vName], 35, mysql_GetString("spielerautos", "Name", "ID", str));
    PrivCar[vehicleid][vModelid] = mysql_GetInt("spielerautos", "Modelid", "ID", str);
    format(PrivCar[vehicleid][vNummernschild], 20, mysql_GetString("spielerautos", "Nummernschild", "ID", str));
    PrivCar[vehicleid][vPoSx] = mysql_GetFloat("spielerautos", "PosX", "ID", str);
    PrivCar[vehicleid][vPoSy] = mysql_GetFloat("spielerautos", "PosY", "ID", str);
    PrivCar[vehicleid][vPoSz] = mysql_GetFloat("spielerautos", "PosZ", "ID", str);
    PrivCar[vehicleid][vPoSa] = mysql_GetFloat("spielerautos", "PosA", "ID", str);
    PrivCar[vehicleid][vAbgeschlossen] = mysql_GetInt("spielerautos", "Abgeschlossen", "ID", str);
    PrivCar[vehicleid][vFarbe1] = mysql_GetInt("spielerautos", "Farbe1", "ID", str);
    PrivCar[vehicleid][vFarbe2] = mysql_GetInt("spielerautos", "Farbe2", "ID", str);
    PrivCar[vehicleid][vPaintjob] = mysql_GetInt("spielerautos", "Paintjob", "ID", str);
    PrivCar[vehicleid][vSpoiler] = mysql_GetInt("spielerautos", "Spoiler", "ID", str);
    PrivCar[vehicleid][vHood] = mysql_GetInt("spielerautos", "Hood", "ID", str);
    PrivCar[vehicleid][vRoof] = mysql_GetInt("spielerautos", "Roof", "ID", str);
    PrivCar[vehicleid][vSideskirt] = mysql_GetInt("spielerautos", "Sideskirt", "ID", str);
    PrivCar[vehicleid][vLamps] = mysql_GetInt("spielerautos", "Lamps", "ID", str);
    PrivCar[vehicleid][vNitro] = mysql_GetInt("spielerautos", "Nitro", "ID", str);
    PrivCar[vehicleid][vExhaust] = mysql_GetInt("spielerautos", "Exhaust", "ID", str);
    PrivCar[vehicleid][vWheels] = mysql_GetInt("spielerautos", "Wheels", "ID", str);
    PrivCar[vehicleid][vStereo] = mysql_GetInt("spielerautos", "Stereo", "ID", str);
    PrivCar[vehicleid][vHydraulics] = mysql_GetInt("spielerautos", "Hydraulics", "ID", str);
    PrivCar[vehicleid][vFrontBumper] = mysql_GetInt("spielerautos", "FrontBumper", "ID", str);
    PrivCar[vehicleid][vRearBumper] = mysql_GetInt("spielerautos", "RearBumper", "ID", str);
    PrivCar[vehicleid][vVentRight] = mysql_GetInt("spielerautos", "VentRight", "ID", str);
    PrivCar[vehicleid][vVentLeft] = mysql_GetInt("spielerautos", "VentLeft", "ID", str);
    PrivCar[vehicleid][vAbgeschleppt] = mysql_GetInt("spielerautos", "Abgeschleppt", "ID", str);
    SetVehicleNumberPlate(CreateVehicle(PrivCar[vehicleid][vModelid], PrivCar[vehicleid][vPoSx], PrivCar[vehicleid][vPoSy], PrivCar[vehicleid][vPoSz], PrivCar[vehicleid][vPoSa], PrivCar[vehicleid][vFarbe1], PrivCar[vehicleid][vFarbe2], -1), PrivCar[vehicleid][vNummernschild]);
    vehicleid ++;
    }
    return 1;
    }[/pwn]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von [BlaZZeR]BirD ()

  • Geburtstag & Alter abfragen und Speichern.

    Guten Tag,

    Und zwar habe ich eine Frage, wie kann ich das Geburtsdatum mit MySQL so abfragen, dass das Geburtsdatum und das Alter gespeichert werden. Sprich, wenn ich jetzt zbs. 18.11.1994 eingebe ist man 18 Jahre. Und die beiden sollten Abgespeichert werden. Ich habe das Register System von Maddin ( aus Breadfish ) benutzt. Wäre echt klasse wenn mir da jemand weiter Helfen könnte. Hier ist nochmal das Script was ich gerade mache pastebin.com/dxfP0LMv.

    MfG: Eddy
    [tabmenu]
    [tab='Projekt',http://www.smshosting.bg/images/slider-icons/gta.png]
    Name:
    Forum:
    Script:
    Rang:
    Tätigkeit:
    [tab='Über mich',http://icons.iconarchive.com/icons/dario-arnaez/genesis-3G/48/User-Files-icon.png]
    [subtab='Lebenslauf',http://icons.iconarchive.com/icons/dario-arnaez/genesis-3G/48/User-Files-icon.png]
    Name: Eddy
    Alter: 18
    Wohnort: Hamburg
    Hobbys: Mappen / Fußball
    [subtab='Kontakt',http://icons.iconarchive.com/icons/graphics-vibe/retro-social/128/skype-icon.png]
    Skype: eddyforever15
    ICQ: 636138678
    [/tabmenu]
  • Du erstellst 2 Felder (z.B. "birthday" (mach'n Varchar draus) und "age" (Integer)) und dann heißt es "Feinarbeit", also rechnen (so wie ich mir das ausmale). Du machst folgendes: Fragst mit strfind ab, ob Punkte enthalten sind, dann splittest du:
    [pwn]split(inputtext, birthday, '.');[/pwn]
    du das ganze. Hast dann 'n Array:
    birthday[0] = 18
    birthday[1] = 11
    birthday[2] = 1994
    Und dann musst du rechnen, also holst du dir das Date: wiki.sa-mp.com/wiki/Getdate also das Jahr und den Monat (ich sag mal Variable "year" und "month") und rechnest dann:
    new age = (year - birthday[2]);
    dann dürfte da 18 rauskommen.

    Ich hoffe das Prinzip ist klar - bei Fragen, nur zu, frag ruhig! :)
  • Nur das Problem ist ich bin Anfänger in Pawno. Kannst du mir ein Beispiel zu dem ganzen machen, was ich halt nur anpassen brauche?
    [tabmenu]
    [tab='Projekt',http://www.smshosting.bg/images/slider-icons/gta.png]
    Name:
    Forum:
    Script:
    Rang:
    Tätigkeit:
    [tab='Über mich',http://icons.iconarchive.com/icons/dario-arnaez/genesis-3G/48/User-Files-icon.png]
    [subtab='Lebenslauf',http://icons.iconarchive.com/icons/dario-arnaez/genesis-3G/48/User-Files-icon.png]
    Name: Eddy
    Alter: 18
    Wohnort: Hamburg
    Hobbys: Mappen / Fußball
    [subtab='Kontakt',http://icons.iconarchive.com/icons/graphics-vibe/retro-social/128/skype-icon.png]
    Skype: eddyforever15
    ICQ: 636138678
    [/tabmenu]
  • String splitten mit SSCANF

    Mahlzeit,

    da ich das mit dem splitten nicht verstehe, frage ich hier mal nach.
    Wie genau funktioniert das?

    Angenommen ich habe einen String:
    [pwn]new text[100] = "Handy Auto Test Irgendwas";[/pwn]
    Wie kann ich den jetzt splitten?

    [pwn]new test1[10],test2[10],test3[10], test4[10];
    sscanf(text, "p|s[10]s[10]s[10]s[10]", test1, test2, test3, test4);[/pwn]
    Würde es so gehen?
  • Bis auf eine Kleinigkeit ist das richtig.

    [pwn]"p<|>s[10]s[10]s[10]s[10]"[/pwn]
    Das p<> (diese größer/kleiner Zeichen werden seit dem sscanf-Plugin benötigt) dort gibt an, welches Zeichen zum Abtrennen verwendet wird. Hier ist das: |
    Wenn man das p<> weglässt, nimmt sscanf einfach das Leerzeichen zum Abtrennen, wie es für den Fall hier funktionieren würde.