[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
  • Unter meinem PlayerInfo Enum.
    bool:pLeader


    Unter meinem stock SavePlayerAccount. ( Davor )
    dini_IntSet(spName,"Leader",pInfo[playerid][pLeader]);


    Jetzt habe ich es so gemacht. ( Danach )
    dini_IntSet(spName,"Leader",_:pInfo[playerid][pLeader]);
    Dies funktioniert nicht.


    Und diese Variante auch nicht, habe die ja zuvor benutzt.
    dini_IntSet(pfad, "BoolWert", bVar);



    Die Error Message
    C:\Users\----\----\-----\gamemodes\denamed.pwn(2420) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.

    Einmal editiert, zuletzt von malE ()

  • So erstmal danke Jeffry und Mencent.


    Aber jetzt bei LoadPlayerAccount bekomme ich ein tag mismatch


    Weiß nicht wo der Fehler ist.
    pInfo[playerid][pLeader] = dini_Bool(spName,"Leader");


    Lösung:
    pInfo[playerid][pLeader] = bool:dini_Bool(spName,"Leader");

    Einmal editiert, zuletzt von malE ()

  • @Mencent: malE:


    dini_Int und dini_Bool sind genau gleich, es spielt keine Rolle welches man verwendet. Daher muss man (siehe Lösung) auch dini_Bool mit bool: casten.


    stock dini_IntSet(filename[],key[],value) {
    new valuestring[MAX_STRING];
    format(valuestring,sizeof(valuestring),"%d",value);
    return dini_Set(filename,key,valuestring);
    }


    stock dini_Int(filename[],key[]) {
    return strval(dini_Get(filename,key));
    }


    stock dini_BoolSet(filename[],key[],value) {
    new valuestring[MAX_STRING];
    format(valuestring,sizeof(valuestring),"%d",value);
    return dini_Set(filename,key,valuestring);
    }


    stock dini_Bool(filename[],key[]) {
    return strval(dini_Get(filename,key));
    }


    Quelle: dini.inc



    Eigentlich müsste dini_Bool so aussehen:
    forward bool:dini_Bool(filename[],key[]);
    stock bool:dini_Bool(filename[],key[]) {
    return bool:strval(dini_Get(filename,key));
    }


    Das könntest du in der dini.inc ändern, dann sparst du dir das casten im eigentlichen Code, da das unschön ist.

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


    forward LoadClans();
    public LoadClans()
    {
    new string[128];
    for(new i = 0; i < MAX_CLANS; i++)
    {
    format(string, sizeof(string),"SELECT * FROM `Clans` WHERE `ID` = '%d'", i);
    mysql_query(dbhandle,string);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
    mysql_fetch_row(string);
    Clan[i][cID] = cache_get_field_content_int(0,"ID",dbhandle);
    cache_get_field_content(0, "name", Clan[i][cName], dbhandle, 32);
    cache_get_field_content(0, "Leader", Clan[i][cLeader], dbhandle, 32);
    Clan[i][cMitglieder] = cache_get_field_content_int(0,"Mitglieder",dbhandle);
    Clan[i][cLevel] = cache_get_field_content_int(0,"level",dbhandle);
    Clan[i][cGeld] = cache_get_field_content_int(0,"geld",dbhandle);
    Clan[i][cEXP] = cache_get_field_content_int(0,"EXP",dbhandle);
    Clan[i][cSiege] = cache_get_field_content_int(0,"Siege",dbhandle);
    Clan[i][cNiederlagen] = cache_get_field_content_int(0,"Niederlagen",dbhandle);
    Clan[i][cUnentschieden] = cache_get_field_content_int(0,"Unentschieden",dbhandle);
    }
    mysql_free_result();
    printf("Clan ID: %i | Name: %s | Leader: %s | Mitglieder: %i | Level: %i | Geld: %i | EXP: %i | S: %i N: %i U: %i", Clan[i][cID], Clan[i][cName], Clan[i][cLeader], Clan[i][cMitglieder], Clan[i][cLevel],Clan[i][cGeld],
    Clan[i][cEXP],Clan[i][cSiege],Clan[i][cNiederlagen],Clan[i][cUnentschieden]);
    }
    return 1;
    }


    Gibt mir 50 mal (MAX_CLANS) aus:

    Code
    Clan ID: 0 | Name:  | Leader:  | Mitglieder: 0 | Level: 0 | Geld: 0 | EXP: 0 | S: 0 N: 0 U: 0


    Connection etc ist hergestellt. SQL Version R34

  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Wenn man mit den Cache-Funktionen schon arbeitet, dann sollte man es komplett machen, sonst bringt es keinen Vorteil.
    Nutze für das Query: http://wiki.sa-mp.com/wiki/MySQL/R33#mysql_pquery


    OnGameModeInit:
    mysql_pquery(dbhandle, "SELET * FROM Clans;", "LoadClans", "");


    Ganz unten im Code:
    forward LoadClans();
    public LoadClans()
    {
    new rows = cache_num_rows();
    for(new i;i<rows;i++)
    {
    Clan[i][cID] = cache_get_field_content_int(i,"ID",dbhandle);
    cache_get_field_content(i,"name",Clan[i][cName],dbhandle,32);
    cache_get_field_content(i,"Leader",Clan[i][cLeader],dbhandle,32);
    Clan[i][cMitglieder] = cache_get_field_content_int(i,"Mitglieder",dbhandle);
    Clan[i][cLevel] = cache_get_field_content_int(i,"level",dbhandle);
    Clan[i][cGeld] = cache_get_field_content_int(i,"geld",dbhandle);
    Clan[i][cEXP] = cache_get_field_content_int(i,"EXP",dbhandle);
    Clan[i][cSiege] = cache_get_field_content_int(i,"Siege",dbhandle);
    Clan[i][cNiederlagen] = cache_get_field_content_int(i,"Niederlagen",dbhandle);
    Clan[i][cUnentschieden] = cache_get_field_content_int(i,"Unentschieden",dbhandle);
    printf("Clan ID: %i | Name: %s | Leader: %s | Mitglieder: %i | Level: %i | Geld: %i | EXP: %i | S: %i N: %i U: %i",Clan[i][cID], Clan[i][cName], Clan[i][cLeader], Clan[i][cMitglieder], Clan[i][cLevel],Clan[i][cGeld],
    Clan[i][cEXP],Clan[i][cSiege],Clan[i][cNiederlagen],Clan[i][cUnentschieden]);
    }
    return 1;
    }


    @Mencent: Dein Code würde nicht funktionieren, da du in der Schleife das Result frei gibst, somit würde es maximal einen Clan laden.

  • Moin
    Ich hänge momentan an dem Problem, dass ich ein Array mit einem enum definiert habe, dieses aber dennoch über die entsprechende Arraystelle aufrufen möchte. Nutze ich einen normalen Aufruf bekomme ich ein Warning "warning 213: tag mismatch"


    Aufruf: FrakSettings[frak][6]


    enum FrakOption
    {
    fName,
    fKasse,
    fMats,
    fDrugs,
    fMotd[128],
    fRang1[24],
    fRang2[24],
    fRang3[24],
    fRang4[24],
    fRang5[24],
    fRang6[24]
    }
    new FrakSettings[sizeof(Fraks)][FrakOption];

  • Ich habe vor die einzelnen Rangname auszulesen aus dem entsprechenden Array. Da ich aber über einen Dialog gehe wäre es mir etwas zu umständlich das ganze in ohne ende if Abfragen für jedes listitem zu hängen, daher suche ich nach einer besseren Lösung


    Edit: In diese Richtung hatte ich dabei gedacht

    new rank = listitem+5;
    FrakSettings[frak][rank]

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