[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
  • Musst vorher abfragen ob killerid != INVALID_PLAYER_ID ist.


    Nützt bestimmt viel, wenn die ID 255 ist und nicht 65535 :D


    Das liegt am "neuen" killerid System von SAMP in OnVehicleDeath

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

    Margarete Stokowski

  • Neu? Klär mich bitte auf.


    Sagen wir verbessert ;)


    0.3x RC2


    Zitat

    In 0.3x, the final parameter of OnVehicleDeath (killerid) will be the player who reported the vehicle dead. This should be renamed at some point, although, in the interest of keeping the callback compatible with old scripts, the name won't be changed for 0.3x.

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

    Margarete Stokowski

  • habe ein kleines Problem und zwar..



    Wenn ich den befehl /makeadmin eingebe kommt Unknown Command doch normal sollte er funktionieren..
    hier der Code
    dcmd_makeadmin(playerid, params[])
    {
    new pid,level;
    if(sscanf(params,"ud", pid, level))return SendClientMessage(playerid,Blau,"Verwendung: /makeadmin [id] [Level]");
    if(IstSpielerAdmin(playerid, 5))
    {
    if(pid == INVALID_PLAYER_ID)return SendClientMessage(playerid,Rot,"UngültierSpieler");
    if(sSpieler[pid][Adminlevel] == level)return SendClientMessage(playerid, Rot,"Der spieler hat schon das angegeben adminlevel");
    sSpieler[pid][Adminlevel] = level;
    SendClientMessage(pid, Blau,"Du bist nun Admin");
    SendClientMessage(playerid,Blau,"Du hast den angegeben Spieler zum Admin gemacht");
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Admin");
    }
    return 1;
    }

    Mit freundlichen Grüßen
    Siepac

  • DeletePlayer3DTextLabel(playerid,labelduty);


    Göht nicht... da kommt: warning 213: tag mismatch


    erstellen geht nur löschen nicht -.-


    new Text3D:labelduty = Create3DTextLabel("Beamter Onduty", BLAU, 30.0, 40.0, 50.0, 40.0, 0);
    }
    Attach3DTextLabelToPlayer(labelduty, playerid, 0.0, 0.0, 0.7);
    SetPVarInt(playerid,"Duty",1);
    SetPlayerColor(playerid,BLAU);
    SCM(playerid,HBLAU,"AdmCmd: Du bist nun Onduty.../duty um offduty zu gehen");
    }
    dann ein paar klammern und dann das:


    DeletePlayer3DTextLabel(playerid,labelduty);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Warum zeigt er mir hier nicht den Namen der Firma an?
    bcmd:firma(playerid,params[])
    {
    if(GetPVarInt(playerid,"loggedin")!=1)return SendClientMessage(playerid,cRed,"Du bist nicht eingeloggt!");
    if(PlayerInfo[playerid][Gemutet]!=0) return SendClientMessage(playerid,cWarn,"Du bist gemutet!");
    new string[256],query[128];
    format(query,128,"SELECT `Firmenid` FROM `FirmenUser` WHERE `Name` = '%s'",PlayerInfo[playerid][Name]);
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    if(mysql_num_rows(SQL) != 0)
    {
    new id = mysql_fetch_int(SQL);
    format(string,256,"%s\n",FirmenInfo[id][FirmenName]);
    ShowPlayerDialog(playerid,diaJobVertrag,DIALOG_STYLE_MSGBOX,"Firmen",string,"Ok","");
    }
    mysql_free_result(SQL);
    return 1;
    }
    Der Dialog ist leer bei den Firmen
    erstellen lass ich die so
    stock CreateFirma(playerid,nana[])
    {
    new datei[128];
    for(new i = 0; i < MAX_FIRMEN; i++)
    {
    if(FirmenInfo[i][FirmenErstellt]==0)
    {
    format(FirmenInfo[i][FirmenName],50,"%s",nana);
    FirmenInfo[i][FirmenKasse]=0;
    FirmenInfo[i][FirmenErstellt]=1;
    FirmenInfo[i][FirmenID]=i+1;
    format(datei,128,"INSERT INTO `Firmen` (`id`, `Name`, `Kasse`, `Erstellt`) VALUES ('%d', '%s', '%d', '%d')", i+1, FirmenInfo[i][FirmenName], FirmenInfo[i][FirmenKasse], FirmenInfo[i][FirmenErstellt]);
    mysql_query(datei, (-1), (0), SQL);
    format(datei,128,"INSERT INTO `FirmenUser` (`Name`, `Firmenid`, `Firmenleader`) VALUES ('%s', '%d', '1')", PlayerInfo[playerid][Name], FirmenInfo[i][FirmenID]);
    mysql_query(datei, (-1), (0), SQL);
    return format(datei,128,"Du hast erfolgreich die Firma %s (id: %d) gegründet",FirmenInfo[i][FirmenName],FirmenInfo[i][FirmenID]),SendClientMessage(playerid,cGrey,datei);
    }
    }
    return 1;
    }

    All in all it's just another brick in the wall

  • @[DT]Beavis


    du speicherst
    FirmenInfo[i][FirmenID]=i+1; bei CreateFirma
    = Die firma ist im array-Wert i aber du speicherst i+1
    heißt du musst bei /firma dein
    new id = mysql_fetch_int(SQL);
    durch
    new id = (mysql_fetch_int(SQL)-1);
    ersetzen
    quasi die 1 wieder abziehen


    oder eben bei CreateFirma das +1 entfernen

  • Daran liegt es nicht er lädt es richtig aber die Namen kommen nicht
    Es wird auch in der Datenbank mit den +1 dazu gerechnet
    Aber ich müsste da einfach das id +1 zugeben damit es richtig klappt...
    Danke für den hinweis^^

    All in all it's just another brick in the wall

  • Daran liegt es nicht er lädt es richtig aber die Namen kommen nicht
    Es wird auch in der Datenbank mit den +1 dazu gerechnet
    Aber ich müsste da einfach das id +1 zugeben damit es richtig klappt...
    Danke für den hinweis^^


    Naja im array ist die firma an der stelle "i" drin und du speicherst "i+1" in der mysql datenbank und anschließend holst du den wert aus der datenbank und setzt ihn im array wieder ein, also eins zu hoch. Kann dein "Daran liegt es nicht" nicht wirklich verstehen.

  • Zumindest zeigt er jetzt den Namen
    Aber wenn ich in 2 Firmen eingetragen bin, zeigt er nur einen an
    so ist es zurzeit:
    bcmd:firma(playerid,params[])
    {
    if(GetPVarInt(playerid,"loggedin")!=1)return SendClientMessage(playerid,cRed,"Du bist nicht eingeloggt!");
    if(PlayerInfo[playerid][Gemutet]!=0) return SendClientMessage(playerid,cWarn,"Du bist gemutet!");
    new string[256],query[128];
    format(query,128,"SELECT `Firmenid` FROM `FirmenUser` WHERE `Name` = '%s'",PlayerInfo[playerid][Name]);
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    if(mysql_num_rows(SQL) != 0)
    {
    new id = mysql_fetch_int(SQL)-1;
    format(string,256,"%s%s\n",string,FirmenInfo[id][FirmenName]);
    ShowPlayerDialog(playerid,diaJobVertrag,DIALOG_STYLE_MSGBOX,"Firmen",string,"Ok","");
    }
    mysql_free_result(SQL);
    return 1;
    }


    Ich möchte ja das er mir alle Firmen ausgibt wo ich eingetragen bin

    All in all it's just another brick in the wall

  • @[DT]Beavis
    bcmd:firma(playerid,params[])
    {
    if(GetPVarInt(playerid,"loggedin")!=1)return SendClientMessage(playerid,cRed,"Du bist nicht eingeloggt!");
    if(PlayerInfo[playerid][Gemutet]!=0) return SendClientMessage(playerid,cWarn,"Du bist gemutet!");
    new string[256],query[128];
    format(query,128,"SELECT `Firmenid` FROM `FirmenUser` WHERE `Name` = '%s'",PlayerInfo[playerid][Name]);
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    while(mysql_retrieve_row(SQL))//lauf durch alle zeilen durch
    {
    new tmp[12];
    mysql_fetch_field_row(tmp, "Firmenid", SQL);
    new id = strval(tmp)-1;
    format(string,256,"%s%s\n",string,FirmenInfo[id][FirmenName]);
    ShowPlayerDialog(playerid,diaJobVertrag,DIALOG_STYLE_MSGBOX,"Firmen",string,"Ok","");
    }
    mysql_free_result(SQL);
    return 1;
    }
    so, sofern das mit deiner mysql version auch kompatibel ist


    Edit: SQL variable hinzugefügt in den funktionen

  • new tmp[12];
    while(mysql_fetch_row(tmp, "|", SQL))
    {
    new id = strval(tmp)-1;
    format(string,256,"%s%s\n",string,FirmenInfo[id][FirmenName]);
    ShowPlayerDialog(playerid,diaJobVertrag,DIALOG_STYLE_MSGBOX,"Firmen",string,"Ok","");
    }


    könnte so hinhauen, sofern die Funktionen auch das machen was ich vermute

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