[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
  • Warum rutscht die Tabellen Einträge immer eins nach Oben also:
    Tabelle 1 Wert: 2500
    Tabelle 2 Wert: 4000
    Tabelle 3 Wert: 500
    Danach ist es so:
    Tabelle 1 Wert: 4000
    Tabelle 2 Wert: :500
    Tabelle 3 Wert: 500
    Hier wird alles gespeichert:
    stock SaveFraktion()
    {
    new query[275],
    frak = 0;
    for(;frak<MAX_FRAKTIONEN;frak++)
    {
    format(query,sizeof(query),"UPDATE "#DATENBANK"_fraktionen SET frakmaterial = '%d', frakgeld = '%d', marihuana = '%d', koks = '%d', crystle = '%d', lsd = '%d', gras = '%d' WHERE frakid = '%d'",FrakInfo[frak][frakmaterial],FrakInfo[frak][frakgeld],FrakInfo[frak][fMarihuana],FrakInfo[frak][fKoks],FrakInfo[frak][fCrystle],FrakInfo[frak][fLSD],FrakInfo[frak][fGras],frak);
    mysql_function_query(MYSQLVerbindung,query,false,"","");
    }
    return 1;
    }


    Und hier geladen:
    mysql_function_query(MYSQLVerbindung,"SELECT * FROM "#DATENBANK"_fraktionen",true,"OnQueryFinish","siii","SELECT * FROM "#DATENBANK"_fraktionen",_SQL_FRAKTION_LOAD,0,MYSQLVerbindung);
    case _SQL_FRAKTION_LOAD:
    {
    cache_get_data(rows,fields);
    new frakstring[500],frakname[75];
    new frak = 0;
    if(rows)
    {
    while(frak<rows)
    {
    cache_get_field_content(frak,"id",result);
    FrakInfo[frak][fid] = strval(result);
    printf("ID: %d",FrakInfo[frak][fid]);


    cache_get_field_content(frak,"interior",result);
    FrakInfo[frak][fInteriorID] = strval(result);


    cache_get_field_content(frak,"vwelt",result);
    FrakInfo[frak][fVirtuelleWelt] = strval(result);


    cache_get_field_content(frak,"frakgeld",result);
    FrakInfo[frak][frakgeld] = strval(result);
    printf("geldf: %d",FrakInfo[frak][frakgeld]);


    cache_get_field_content(frak,"mp5rank",result);
    FrakInfo[frak][fMP5Rank] = strval(result);


    cache_get_field_content(frak,"m4rank",result);
    FrakInfo[frak][fM4Rank] = strval(result);


    cache_get_field_content(frak,"deaglerank",result);
    FrakInfo[frak][fDeagleRank] = strval(result);


    cache_get_field_content(frak,"ak47rank",result);
    FrakInfo[frak][fAK47Rank] = strval(result);


    cache_get_field_content(frak,"riflerank",result);
    FrakInfo[frak][fRifleRank] = strval(result);


    cache_get_field_content(frak,"pistolerank",result);
    FrakInfo[frak][fPistoleRank] = strval(result);


    cache_get_field_content(frak,"shotgunrank",result);
    FrakInfo[frak][fShotgunRank] = strval(result);


    cache_get_field_content(frak,"baseballrank",result);
    FrakInfo[frak][fBaseballRank] = strval(result);


    cache_get_field_content(frak,"schlagringrank",result);
    FrakInfo[frak][fSchlagringRank] = strval(result);


    cache_get_field_content(frak,"schwacheR",result);
    FrakInfo[frak][fSRustung] = strval(result);


    cache_get_field_content(frak,"mittelR",result);
    FrakInfo[frak][fMRustung] = strval(result);


    cache_get_field_content(frak,"starkeR",result);
    FrakInfo[frak][fStarkRustung] = strval(result);


    cache_get_field_content(frak,"frakmaterial",result);
    FrakInfo[frak][frakmaterial] = strval(result);


    cache_get_field_content(frak,"marihuana",result);
    FrakInfo[frak][fMarihuana] = strval(result);


    cache_get_field_content(frak,"koks",result);
    FrakInfo[frak][fKoks] = strval(result);


    cache_get_field_content(frak,"crystle",result);
    FrakInfo[frak][fCrystle] = strval(result);


    cache_get_field_content(frak,"lsd",result);
    FrakInfo[frak][fLSD] = strval(result);


    cache_get_field_content(frak,"gras",result);
    FrakInfo[frak][fGras] = strval(result);


    FrakInfo[frak][fPosX] = cache_get_row_float(frak,29,MYSQLVerbindung);
    FrakInfo[frak][fPosY] = cache_get_row_float(frak,30,MYSQLVerbindung);
    FrakInfo[frak][fPosZ] = cache_get_row_float(frak,31,MYSQLVerbindung);


    cache_get_field_content(frak,"frakrank1",result);
    format(FrakRank0[frak],26,"%s",result);


    cache_get_field_content(frak,"frakrank2",result);
    format(FrakRank1[frak],26,"%s",result);


    cache_get_field_content(frak,"frakrank3",result);
    format(FrakRank2[frak],26,"%s",result);


    cache_get_field_content(frak,"frakrank4",result);
    format(FrakRank3[frak],26,"%s",result);


    cache_get_field_content(frak,"frakrank5",result);
    format(FrakRank4[frak],26,"%s",result);


    cache_get_field_content(frak,"frakrank6",result);
    format(FrakRank5[frak],26,"%s",result);


    cache_get_field_content(frak,"fraklohn1",result);
    FrakInfo[frak][fraklohn1] = strval(result);


    cache_get_field_content(frak,"fraklohn2",result);
    FrakInfo[frak][fraklohn2] = strval(result);


    cache_get_field_content(frak,"fraklohn3",result);
    FrakInfo[frak][fraklohn3] = strval(result);


    cache_get_field_content(frak,"fraklohn4",result);
    FrakInfo[frak][fraklohn4] = strval(result);


    cache_get_field_content(frak,"fraklohn5",result);
    FrakInfo[frak][fraklohn5] = strval(result);


    cache_get_field_content(frak,"fraklohn6",result);
    FrakInfo[frak][fraklohn6] = strval(result);


    cache_get_field_content(frak,"wtposX",result);
    FrakInfo[frak][WTPos][0] = floatstr(result);


    cache_get_field_content(frak,"wtposY",result);
    FrakInfo[frak][WTPos][1] = floatstr(result);


    cache_get_field_content(frak,"wtposZ",result);
    FrakInfo[frak][WTPos][2] = floatstr(result);


    Danke im vorraus

  • Versuche ob es so schon hilft.
    format(query,sizeof(query),"UPDATE "#DATENBANK"_fraktionen SET frakmaterial = '%d', frakgeld = '%d', marihuana = '%d', koks = '%d', crystle = '%d', lsd = '%d', gras = '%d' WHERE frakid = '%d'",FrakInfo[frak][frakmaterial],FrakInfo[frak][frakgeld],FrakInfo[frak][fMarihuana],FrakInfo[frak][fKoks],FrakInfo[frak][fCrystle],FrakInfo[frak][fLSD],FrakInfo[frak][fGras],frak);
    zu:
    format(query,sizeof(query),"UPDATE "#DATENBANK"_fraktionen SET frakmaterial = '%d', frakgeld = '%d', marihuana = '%d', koks = '%d', crystle = '%d', lsd = '%d', gras = '%d' WHERE frakid = '%d'",FrakInfo[frak][frakmaterial],FrakInfo[frak][frakgeld],FrakInfo[frak][fMarihuana],FrakInfo[frak][fKoks],FrakInfo[frak][fCrystle],FrakInfo[frak][fLSD],FrakInfo[frak][fGras],frak+1);


    PS: Dieser Thread ist für kleine Fragen, nicht für solche großen Codes, gedacht.

  • Warum wird man nicht in den Editor gesetzt?
    case DIALOG_INVENTAR:
    {
    if(!response)return true;
    if(Inventar[playerid][listitem][0] == -1)return SendClientMessage(playerid,GRAU,"Dieser Inventarslot ist leer");
    new Float:x,Float:y,Float:z, vworld = GetPlayerVirtualWorld(playerid), vint = GetPlayerInterior(playerid);
    GetPlayerPos(playerid,x,y,z);
    Inventar[playerid][listitem][2] = CreateDynamicObject(Inventar[playerid][listitem][0],x+3,y,z, 0.0, 0.0,0.0, vworld, vint, -1, 100.0);
    EditDynamicObject(playerid, Inventar[playerid][listitem][2]);
    }

  • Warum wird der textlabel und die Pflanze nicht gelöscht?
    if(DrogenInfo[drug][drugart] == 1) {
    DrogenInfo[drug][geerntet] = 1;
    Spieler[playerid][pMarihuana] += DrogenInfo[drug][drugausbeute];
    format(string,sizeof(string),""#HTML_RED"Info: "#HTML_WHITE"Du hast %i Droge (Marihuana) abgeerntet!",DrogenInfo[drug][drugausbeute]);
    format(query,sizeof(query),"DELETE FROM "#DATENBANK"_drogen WHERE drogenid = '%d'",DrogenInfo[drug][drogenid]);
    Delete3DTextLabel(DrugText[drug]);
    DestroyObject(DrogenInfo[drug][drugobjekt]);
    SendClientMessage(playerid,GRAU,string);
    return true;
    }

  • Wie kann man abfragen ob ein string leer ist?


    hier mit
    #define isnull(%1) ((%1[0] == 0) || (%1[0] == 1 && %1[1] == 0))


    Nutzung:
    if(isnull(string))
    {
    // was tun wenn der string leer ist
    }

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • enum fraktionInfo {
    Float:SpawnX,
    Float:SpawnY,
    Float:SpawnZ,
    fIName[70],
    fIColor
    }
    new frakt[MAX_FRAKS][fraktionInfo] = {
    {0.000, 0.000, 0.000, "Hitmen Agency", 0x743A3AFF},
    {0.000, 0.000, 0.000, "San Fierro Police Department", 0x0385AFFF},
    {0.000, 0.000, 0.000, "Las Venturas Police Department", 0x0385AFFF},
    {0.000, 0.000, 0.000, "San Andreas Medical Department", 0xB30000FF},
    {0.000, 0.000, 0.000, "San Andreas Vehicle Controll", 0xD26900FF}, // Abschlepp Dienst
    {0.000, 0.000, 0.000, "Yakuza", 0xFF82C0FF}
    };


    Compiler sagt:

    Spoiler anzeigen
    error 052: multi-dimensional arrays must be fully initialized
    Zeile 15

  • Warum folgende Errors:
    case _SQL_FVERWALTUNG_INSERT:
    {
    cache_get_data(rows,fields);
    if(!rows)
    { //zeile 44645
    format(query,sizeof(query),"INSERT INTO fraktionen (id,frakid,frakrank1,frakrank2,frakrank3,frakrank4,frakrank5,frakrank6,mp5rank,m4rank,deaglerank,ak47rank,rifelrank,pistolerank,shotgunrank,baseballrank,schlagringrank,schwacheR,mittelR,starkerR,interior,vwelt,frakgeld,frakmaterial,marihuana,koks,crystle,lsd,gras,posx,posy,posz,fraklohn1,fraklohn2,fraklohn3,fraklohn4,fraklohn5,fraklohn6,wtposX,wtposY,wtposZ,mlimit) VALUES ('%d','%d','NA','NA','NA','NA','NA','NA','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'",id,frakid);//Zeile 44646
    mysql_function_query(MySQLVerbidung,query,false,"","");
    printf("- Fraktionsvewaltung für die Fraktion %i erstellt -",frakid);
    }
    return 1;
    }
    (44645) : error 075: input line too long (after substitutions)
    (44646) : error 037: invalid string (possibly non-terminated string)
    (44646) : error 017: undefined symbol "INSERT"
    (44646) : error 017: undefined symbol "INTO"

  • Schreibe es so:


    case _SQL_FVERWALTUNG_INSERT:
    {
    cache_get_data(rows,fields);
    if(!rows)
    {
    query = "INSERT INTO fraktionen (id,frakid,frakrank1,frakrank2,frakrank3,frakrank4,frakrank5,frakrank6,mp5rank,m4rank,deaglerank,ak47rank,rifelrank,pistolerank,shotgunrank,baseballrank,schlagringrank,schwacheR,mittelR,starkerR,interior,vwelt,frakgeld,frakmaterial,marihuana,koks,crystle,lsd,gras,posx,posy,posz,fraklohn1,fraklohn2,fraklohn3,fraklohn4,fraklohn5,fraklohn6,wtposX,wtposY,wtposZ,mlimit) VALUES";
    format(query,sizeof(query),"%s('%d','%d','NA','NA','NA','NA','NA','NA','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'",query,id,frakid);
    mysql_function_query(MySQLVerbidung,query,false,"","");
    printf("- Fraktionsvewaltung für die Fraktion %i erstellt -",frakid);
    }
    return 1;
    }

    ast2ufdyxkb1.png


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

  • Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Spoiler anzeigen
    stock StartMotor(playerid)
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug, um den Motor zu starten!");
    if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid, 0x9B0000FF, "Nur der Fahrer kann den Motor starten!");
    new car = GetPlayerVehicleID(playerid),m = GetVehicleModel(car);
    if(m == 509 || m == 481 || m == 510) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt auf einem Fahrrad, das hat keinen Motor!");
    else if (Motor[car] == false)
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    Motor[car] = true;
    SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {36D61A}an!");
    return 1;
    }
    else
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[car] = false;
    SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {E83A3D}aus!");
    return 1;
    }
    return 1;
    }

    Spoiler anzeigen
    stock LichtAn(playerid)
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug, um das Licht einzuschalten!");
    if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid, 0x9B0000FF, "Nur der Fahrer kann das Licht einschalten!");
    new car = GetPlayerVehicleID(playerid),m = GetVehicleModel(car);
    printf("playerid: %d / Vehicle: %d / Model: %d", playerid, car, m);
    if(m == 417 || 425 || m == 447 || m == 464 || m == 465 || m == 469 || m == 487 || m == 488 || m == 497 || m == 501 || m == 548 || m == 563 || m == 430 || m == 446 || m == 452 || m == 453 || m == 454 || m == 472 || m == 473 || m == 484 || m == 493 || m == 595 ||
    m == 460 || m == 476 || m == 511 || m == 512 || m == 513 || m == 519 || m == 520 || m == 553 || m == 577 || m == 592 || m == 593) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in einem Fahrzeug,Boot,Flugzeug, welches kein Licht hat!");
    if (Licht[car] == false)
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
    Licht[car] = true;
    SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen am Schalter, und schalten das Licht {36D61A}an!");
    return 1;
    }
    else
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
    Licht[car] = false;
    SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen am Schalter, und schalten das Licht {E83A3D}aus!");
    return 1;
    }
    return 1;
    }


    Versuche es so. Wenn es nicht geht, poste was beim Licht einschalten im Server Log steht.

  • Jeffry:
    Wie kann ich jetzt die Position immer und immer wieder aktualisieren, bis man den Timer killen lässt?



    Spoiler anzeigen
    ocmd:find(playerid,params[])
    {
    new pID, Float:Pos[3];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid, C_SSCANF, "Benutze: {FFFFFF}/find [Spieler-ID]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,C_GREY,"** Der angegebende Spieler ist nicht Online.");
    if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid, C_GREY," * Du kannst dich nicht selbst finden");
    GetPlayerPos(pID, Pos[0], Pos[1], Pos[2]);
    SetPlayerCheckpoint(playerid, Pos[0], Pos[1], Pos[2], 2);
    SetTimerEx("FindPlayer",1000,true,"u",playerid);
    return 1;
    }

    Spoiler anzeigen
    forward FindPlayer(playerid);
    public FindPlayer(playerid)
    {
    return 1;
    }

  • SetTimerEx("FindPlayer",1000,true,"u",playerid);
    zu:
    findTimer[playerid] = SetTimerEx("FindPlayer",1000,true,"dd",playerid, pID);


    Und:
    forward FindPlayer(playerid, pID);
    public FindPlayer(playerid, pID)
    {
    return 1;
    }


    Dann kannst du direkt in diesem public den Checkpoint neu setzen.


    Unter den Includes:
    new findTimer[MAX_PLAYERS] = {-1,...}; //Setzt alle Werte auf -1


    So kannst du dann über
    KillTimer(findTimer[playerid]);
    findTimer[playerid] = -1;
    den Timer killen.

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