[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
  • if(sscanf(params,"us",playerid,grund))


    Du willst doch nicht die Spielerid die du eingibst in der Variable playerid speichern...sondern? :P


    (PS: Ich gebe dir keine direkte Lösung, da du ja darum gebeten hast.)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Danke es geht nun, aber weili ch jetzt noch einen Timer machen will, kommt nun ein Error:



    ocmd:kick(playerid,params[])
    {
    if(SpielerInfo[playerid][Alevel] >= 1)
    {
    new pID,string[256],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[256];
    GetPlayerName(pID,SpielerName,sizeof(SpielerName));
    GetPlayerName(playerid,aname,sizeof(aname));
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
    format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat %s gekickt. Grund: %s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
    SendClientMessageToAll(Rot,string);
    Kick(pID) = SetTimerEx("Kicken",100,0, "i", playerid);//Fehler: must be lvalue (non-constant)
    }
    return 1;
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Kick(pID) = SetTimerEx("Kicken",100,0, "i", playerid);//Fehler: must be lvalue (non-constant)


    Das geht ja auch nicht, du kannst der Funktion Kick(pID) doch keinen Wert zuweisen ^^


    Willst du ihn in 100ms Kicken?


    Dann muss das so aussehen:


    SetTimerEx("Kicken",100,0,"i",pID);


    //Und dann bei Kicken
    forward Kicken(i);
    public Kicken(i) return Kick(i);


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • SetTimerEx("Kicken",100,0,"i",pID);


    Geht leider immer noch nicht.. gleicher error:



    ocmd:kick(playerid,params[])
    {
    if(SpielerInfo[playerid][Alevel] >= 1)
    {
    new pID,string[256],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[256];
    GetPlayerName(pID,SpielerName,sizeof(SpielerName));
    GetPlayerName(playerid,aname,sizeof(aname));
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
    format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat %s gekickt. Grund: %s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
    SendClientMessageToAll(Rot,string);
    Kicken(pID) = SetTimerEx("Kicken",100,0,"i",pID);
    }
    return 1;
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • okay.. aber jetzt wird der Spielern icht mehr gekickt..


    ocmd:kick(playerid,params[])
    {
    if(SpielerInfo[playerid][Alevel] >= 1)
    {
    new pID,string[144],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[128];
    GetPlayerName(pID,SpielerName,sizeof(SpielerName));
    GetPlayerName(playerid,aname,sizeof(aname));
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
    format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat %s gekickt. Grund: %s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
    SendClientMessageToAll(Rot,string);
    SetTimerEx("Kicken",100,0,"i",pID);
    }
    return 1;
    }



    Du kannst auch diese Include verwenden, dann musst du nicht bei jedem Kick/Ban den Timer selbst setzen: [ INCLUDE ] Kick/Ban Fix

  • Hallo ich hane mal eine kleine Frage wenn ich ein aduty Befehl machen will muss ich die eine globale variable machen also


    new adminduty [MAX_PLAYERS


    oder hier


    enum playerInfo{
    eingeloggt,
    level,
    db_id,
    alevel,
    slevel,
    Skin,
    fraktion,
    rang,
    spawnchange
    }

  • Du musst in der Datenbank mit SELECT abfragen, ob bereits ein Fahrzeug mit dem Name des Spielers erstellt worden ist.


    Beispiel:
    format(query, 128, "SELECT * FROM deinetabelle WHERE name = '%s'", SpielerName(playerid));


    Wenn dann eine Zeile zurückgegeben wird (also der cache nicht leer ist), hat der Spieler bereits ein Fahrzeug.

  • okay, und ich möchte es so machen dass wenn man Level 5 ist dass man ein Auto + habe nkann , wie geht dass jetzt?


    Dann musst du abfragen ob weniger als zwei Zeilen vorhanden sind:


    new rows = cache..//selbst mit deinen Werten ausfüllen
    if(rows == 1 && SpielerInfo[playerid][Level] != 5)
    {
    //hat bereits eins
    }
    else if(rows == 2 && SpielerInfo[playerid][Level] == 5)
    {
    //hat bereits eins
    }
    else
    {
    //darf eins erstellen
    }

  • Hallo, ich habe mir einen kleinen givegun Befehl geschrieben, kann aber jetzt gut 1 Woche lange nicht Testen, weil ich an keinen Computer mit SAMP komme und wollte fragen ob das so funktionieren würde!
    Errors bekomme ich keine!


    ocmd:givegun(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 3)
    {
    new gname[50],pID,munni,str[30],gweapon;
    if(sscanf(params,"dsd",pID,gname,munni))return SCM(playerid,frot,"[FEHLER]: /givegun [PlayerID][Name][Munition]");
    if(strcmp(gname,"messer",false)){format(str,sizeof(str),"messer"); gweapon = 4;}
    else if(strcmp(gname,"ketten",false)){format(str,sizeof(str),"Kettensäge"); gweapon = 9;}
    else if(strcmp(gname,"granate",false)){format(str,sizeof(str),"Granate"); gweapon = 16;}
    else if(strcmp(gname,"molotov",false)){format(str,sizeof(str),"Molotov Coktail"); gweapon = 18;}
    else if(strcmp(gname,"pistole",false)){format(str,sizeof(str),"pistole"); gweapon = 22;}
    else if(strcmp(gname,"deagle",false)){format(str,sizeof(str),"Desert Eagle"); gweapon = 24;}
    else if(strcmp(gname,"schrot",false)){format(str,sizeof(str),"Schrotflinte"); gweapon = 25;}
    else if(strcmp(gname,"doppelteschrot",false)){format(str,sizeof(str),"Doppelte Schrotflinte"); gweapon = 27;}
    else if(strcmp(gname,"uzi",false)){format(str,sizeof(str),"UZI"); gweapon = 28;}
    else if(strcmp(gname,"mp5",false)){format(str,sizeof(str),"MP5"); gweapon = 29;}
    else if(strcmp(gname,"AK",false)){format(str,sizeof(str),"AK-47"); gweapon = 30;}
    else if(strcmp(gname,"M4",false)){format(str,sizeof(str),"M4"); gweapon = 31;}
    else if(strcmp(gname,"Sniper",false)){format(str,sizeof(str),"Scharfschützengewehr"); gweapon = 34;}
    else if(strcmp(gname,"rpg",false)){format(str,sizeof(str),"RPG"); gweapon = 35;}
    else if(strcmp(gname,"flammenwerfer",false)){format(str,sizeof(str),"MP5"); gweapon = 37;}
    else if(strcmp(gname,"minigun",false)){format(str,sizeof(str),"Minigun"); gweapon = 38;}
    SCM(playerid,mgrün,"[ADMIN]: Du hast dem Spieler %s die Waffe %s mit %d Munition gegeben!",GPlayerName(pID),str,munni);
    SCM(pID,mgrün,"[ADMIN]: Du hast vom Admin %s die Waffe %s mit %d Munition bekommen!",GPlayerName(playerid),str,munni);
    GivePlayerWeapon(pID,gweapon,munni);
    return 1;
    }
    return 1;
    }

  • Hallo leute,


    warum geht mein Ban befehl nicht ? BITTE KEINE DIREKTE ANTWORTEN BZW WAS GENAU DARAN FALSCH IST! Bitte erst so ein Tipp geben :)



    ocmd:ban(playerid,params[])
    {
    if(SpielerInfo[playerid][Alevel] >= 1)
    {
    new pID,string[256],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[256];
    GetPlayerName(pID,SpielerName,sizeof(SpielerName));
    GetPlayerName(playerid,aname,sizeof(aname));
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
    format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat {FF9D00}%s {FFFFFF}verbannt. Grund: {FF9D00}%s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
    SendClientMessageToAll(Rot,string);
    Ban(pID);
    SpielerInfo[playerid][Banned] = 1;
    }
    return 1;
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

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