[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
  • Ich habe das jetze so
    Jeffry;
    heyhooo:
    und bekomme diesen Error


    C:\Users\tobi\Desktop\Selfmadescript\gamemodes\Reallifescript.pwn(4429) : warning 203: symbol is never used: "playerid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    ocmd:a(playerid, params[])
    {
    if(isSupp(playerid, 1) && isAdmin(playerid, 1)) return SendClientMessage(playerid,ROT,"Info: Du bist dazu nicht befugt!");
    new string[128];
    if(sscanf(params, "s[60]", string))return SendClientMessage(playerid, ROT, "Benutze: /a [nachricht]");
    format(string,sizeof(string),"*** %s %s: %s ***",arang(playerid),getPlayerName(playerid), string);//Hier ist der Error
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    SendAdminMessage(ROT, string);
    }
    return 1;
    }


    stock arang(playerid)//Hier ist der Error
    {
    new str[32];
    switch(alevel)
    {
    case 1: str = "Azubie-Admin";
    case 2: str = "*2* Admin";
    case 3: str = "*3* Admin";
    case 1337: str = "H-Admin";
    case 2000: str = "Scripter";
    case 2002: str = "Owner";
    }
    switch(slevel)
    {
    case 1: str = "T-Supporter";
    case 2: str = "Supporter";
    }
    return str;
    }

    2 Mal editiert, zuletzt von snake112 ()

  • Richtig, weil du die SpielerID nicht verwendest.
    Ich glaube nicht, dass du alle Spieler und ihre Levels auf einer Variable speichern kannst.
    Hierfür werden PVars oder Arrays benötigt, die bei dir bestimmt auch schon vorhanden sind.
    Du musst dieses lediglich bei switch ersetzen.


    L.G.

  • [13:30:30] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1',spawnchange='1' WHERE id='4'' at line 1
    [13:35:35] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1',spawnchange='1' WHERE id='4'' at line 1
    [13:44:55] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1',coleader='0',spawnchange='1' WHERE id='4'' at line 1
    [13:45:00] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1',coleader='1',spawnchange='1' WHERE id='4'' at line 1


    was hat das zu bedeuten habe gerade bei /makeleader leader eingefügt das er mit rang 6 nicht automatisch leader ist und mit coleader ? 8|

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


    savePlayer(playerid)
    {
    sInfo[playerid][eingeloggt] = 1;
    new query[156];
    format(query,sizeof(query),"UPDATE user SET level='%i',skin='%i',money='%i',alevel='%i',slevel='%i',fraktion='%i',rang='%i,leader='%i',coleader='%i',spawnchange='%i' WHERE id='%i'",
    GetPlayerScore(playerid),GetPlayerSkin(playerid),GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][slevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][leader],sInfo[playerid][coleader],sInfo[playerid][spawnchange],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    stock SaveAllPlayers()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(!IsPlayerConnected(playerid)) continue;
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',skin='%i',money='%i',alevel='%i',slevel='%i',fraktion='%i',rang='%i',leader='%i',coleader='%i',spawnchange='%i' WHERE id='%i'",
    GetPlayerScore(playerid),GetPlayerSkin(playerid),GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][slevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][leader],sInfo[playerid][coleader],sInfo,sInfo[playerid][spawnchange],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    }
    return 1;
    }


    resetPlayer(playerid)
    {
    sInfo[playerid][level]=0;
    sInfo[playerid][eingeloggt]=0;
    sInfo[playerid][db_id]=0;
    sInfo[playerid][alevel]=0;
    sInfo[playerid][slevel]=0;
    sInfo[playerid][Skin]=0;
    sInfo[playerid][fraktion]=0;
    sInfo[playerid][rang]=0;
    sInfo[playerid][leader]=0;
    sInfo[playerid][coleader]=0;
    sInfo[playerid][spawnchange]=0;
    return 1;
    }


    ocmd:auninvite(playerid,params[])
    {
    if(!isAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Info: Du bist dazu nicht befugt!");
    new pID;
    if(sscanf(params, "u", pID))return SendClientMessage(playerid,ROT,"Benutze: /uninvite [playerid]");
    if(isPlayerInFrakt(pID, 0))return SendClientMessage(playerid,ROT," Der Spieler ist in keiner Fraktion.");
    sInfo[pID][fraktion] = 0;
    sInfo[pID][rang] = 0;
    sInfo[pID][coleader] = 0;
    sInfo[pID][leader] = 0;
    SetPlayerVirtualWorld(pID, 0 );
    SpawnPlayer(pID);
    SetPlayerSkin(pID,60);
    new string[128];
    format(string,sizeof(string),"Admin:Du wurdest von {00FF00}%s {FF0000}aus der Fraktion geworfen",getPlayerName(playerid));
    SendClientMessage(pID, ROT, string);
    format(string,sizeof(string),"Admin:Du hast {00FF00}%s {FFFF00}aus der Fraktion geworfen",getPlayerName(pID));
    SendClientMessage(playerid, GELB, string);
    return 1;
    }


    ocmd:makecoleader(playerid, params[])
    {
    if(!isAdmin(playerid,1337))return SendClientMessage(playerid,ROT,"Info: Du bist dazu nicht befugt!");
    new pID, fID;
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid, ROT, " Benutze: /makecoleader [playerid] [fraktid]");
    if(fID >= sizeof(fInfo))return SendClientMessage(playerid,ROT, " Fraktion existiert nicht.");
    if(!IsPlayerConnected(pID))
    {
    new msg[144];
    format(msg, sizeof(msg), "Error: Der Spieler mit der ID %s exisitiert nicht.",params);
    return SendClientMessage(playerid, ROT, msg);
    }
    sInfo[pID][fraktion] = fID;
    sInfo[pID][rang] = 5;
    sInfo[pID][coleader] = 1;
    new string [128];
    format(string,sizeof(string), "Admin: %s hat dich zum Coleader der Fraktion %s gemacht",getPlayerName(playerid), fInfo[fID][f_name]);
    SendClientMessage(pID, LEUCHTENDBLAU, string);
    SendClientMessage(pID, ROT,"Du kannst mit /help deine neuen Fraktionsbefehle betrachten.");
    SendClientMessage(pID, ROT,"Du hast nun eine 3 Wöchige Coeader Pflicht");
    SendClientMessage(pID, ROT,"Wenn du vor Ablauf der Frist rausgeworfen wirst,bekommst du eine Fraksperre für den Rest der Zeit");
    format(string,sizeof(string),"Du hast einen Spieler %s zum Coleader der Fraktion %s gemacht",getPlayerName(pID), fInfo[fID][f_name]);
    SendClientMessage(playerid,ROT, string);
    savePlayer(pID);
    return 1;
    }


    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Spieler laden
    TogglePlayerSpectating(playerid, 0);
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][Skin] = cache_get_field_content_int(0,"skin",dbhandle);
    SetPlayerSkin(playerid,sInfo[playerid][Skin]);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    sInfo[playerid][slevel] = cache_get_field_content_int(0,"slevel",dbhandle);
    sInfo[playerid][fraktion] = cache_get_field_content_int(0,"fraktion",dbhandle);
    sInfo[playerid][rang] = cache_get_field_content_int(0,"rang",dbhandle);
    sInfo[playerid][leader] = cache_get_field_content_int(0,"leader",dbhandle);
    sInfo[playerid][coleader] = cache_get_field_content_int(0,"coleader",dbhandle);
    sInfo[playerid][spawnchange] = cache_get_field_content_int(0,"spawnchange",dbhandle);
    SendClientMessage(playerid,ROT,"*Erfolgreich eingeloggt.");
    SendClientMessage(playerid,weiß,"===============|WILLKOMMEN|===============");
    SendClientMessage(playerid,Orange,"!!! Playpoint-Reallife - we are the Gamer!!!");
    SendClientMessage(playerid,Orange,"!!! Das Orginale...alles andere ist eine Kopie !!!");
    SendClientMessage(playerid,weiß,"===============|WILLKOMMEN|===============");
    loadPlayerCars(playerid);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Das eigegeben Passwort ist fasch");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Willkommen auf Playpoint-Reallife,\n\n\n\n Bitte logge dich nun ein!\n\n\n","Login","Abbrechen");
    }
    return 1;
    }

  • So leute ich bin BACK :P


    Also kommen wir zum Fehler/Frage:


    Ich möchte jetzt dass beim Regestrieren die IP in die MYSQL Datenbank eingetragen wird. Aber es kommen um diese Errors:

    PHP
    error 017: undefined symbol "GetPlayerIP"
    warning 202: number of arguments does not match definition


    Und das habe ich unter dem Stock CreateAccount gemacht, also wo der Spieler einen Account erstellt:



    stock CreateAccount(playerid, pass[])
    {
    new query[256],Name[MAX_PLAYER_NAME],IP[256];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    GetPlayerIP(playerid, IP, sizeof(IP));//Fehler
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    format(query, sizeof(query), "INSERT INTO `user` (`Name`, `Passwort`, `IP`) VALUES ('%s', '%s', '%s')", Name, pass, IP);
    //format(query, sizeof(query), "INSERT INTO `user` (`Name`, `Passwort`) VALUES ('%s', '%s')", Name, pass);
    mysql_query(query);
    return true;
    }


    Am besten bitte eine Erklärung dazu was falsch war und wieso.

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

  • Beitrag von [KoSoVa] ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Wie erstelle ich daraus :
    ein IP Un/bansystem?


    BanIP(ip[])
    {
    new str[32];
    format(str, 32, "banip %s", ip);
    SendRconCommand(str);
    return true;
    }


    UnBanIP(ip[])
    {
    new str[32];
    format(str, 32, "unbanip %s", ip);
    SendRconCommand(str);
    return true;
    }


    ocmd:banip(playerid,params[])
    {
    new ip[16];
    GetPlayerIp(playerid, ip, 16);
    BanIP(ip);
    return 1;
    }


    ocmd:unbanip
    {
    new ip[16];
    GetPlayerIp(playerid, ip, 16);
    UnBanIP(ip);
    return 1;
    }


    bzw. was ist falsch?

  • ICy.
    Hab schon ein System mir erstelt.
    An alle
    ocmd:ipban(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,4))
    {
    new pID;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,-1,"Tippe : /ipban [IP]");
    {
    new ip[16],str[32],string[88];
    GetPlayerIp(playerid, ip, 16);
    format(str, 32, "banip %s", ip);
    SendRconCommand(str);
    format(string,88, "Die IP %s wurde erfolgreich gesperrt",ip);
    SendClientMessage(playerid,GRÜN,string);
    }
    return 1;
    }
    SendClientMessage(playerid,BLAU,"Du hast kein Admin Level 4.");
    return 1;
    }


    ocmd:ipunban(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,5))
    {
    new pID;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,-1,"Tippe : /ipunban [IP]");
    {
    new ip[16],str[32],string[88];
    GetPlayerIp(playerid, ip, 16);
    format(str, 32, "unbanip %s", ip);
    SendRconCommand(str);
    format(string,88, "Die IP %s wurde erfolgreich entgesperrt",ip);
    SendClientMessage(playerid,GRÜN,string);
    }
    return 1;
    }
    SendClientMessage(playerid,BLAU,"Du hast kein Admin Level 5.");
    return 1;
    }

  • Irgendwie hast du da was durcheinander bekommen :)


    Wenn du eine IP bannen möchtest, oder auch entbannen möchtest, dann liest du deine IP aus, und dadurch sperrst du dich selber.
    Überarbeite das System noch einmal ^^

  • Beitrag von [KoSoVa] ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • @[GeD]Max:
    Versuch das mal so :)
    //Bereits gefixxt (siehe Oben!)

    @FerienFreak:
    Du musst die IP vom Spieler auslesen, welchen du auch sperren möchtest :)

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