Beiträge von Eptix.

    Hey,


    Viele sagten mir, ich muss das streamer plugin installieren.
    Dies habe ich dann getan (neuste version).


    Aber ich erhalten trotzdem den selben Fehler.


    undefined symbol "CreateDynamicObject"


    Der Code:
    (OnGameModeInIt)


    Mir fällt jetzt erst auf, dass ich code vergessen habe gg.


    Account Laden:
    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    // Passwort richtig
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    sInfo[playerid][p_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    SetPlayerMoney(playerid, cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][skin] = cache_get_field_content_int(0,"skin",dbhandle);
    SetPlayerSkin(playerid, sInfo[playerid][skin]);
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    }
    else
    {
    // Passwort falsch
    SendClientMessage(playerid, -1, "Passwort Falsch.");
    Kick(playerid);
    }
    return 1;
    }

    Das Script läuft auf MySQL.


    Eingetragen wird die skinid bzw ich wähle ein skin und er wird in die datenbank eingetragen, aber wenn ich reconnecte, wird der Skin von AddPlayerClass geladen und nicht der von der Datenbank

    Hey,


    Ich möchte dass wenn der Spieler nicht genug geld hat, was nicht kaufen kann.


    Im moment mache ich GivePlayerMoney(playerid, -150000);


    Aber dadurch kommt der Spieler ins minus.


    Wenn er nicht genug geld hat, soll er es nicht kaufen können.

    @Jeffry


    ganz oben im script:


    new Text:skinbg;
    new Text:managebox;
    new Text:rand1;
    new Text:rand2;
    new Text:rand3;
    new Text:rand4;
    new Text:liniemitte;
    new Text:skinfertig;
    new Text:skinback;
    new Text:skinnext;


    GameModeInIt:


    skinbg = TextDrawCreate(429.666625, 344.137145, "usebox");
    TextDrawLetterSize(skinbg, 0.000000, 5.444648);
    TextDrawTextSize(skinbg, 230.333358, 0.000000);
    TextDrawAlignment(skinbg, 1);
    TextDrawColor(skinbg, 0);
    TextDrawUseBox(skinbg, true);
    TextDrawBoxColor(skinbg, 102);
    TextDrawSetShadow(skinbg, 0);
    TextDrawSetOutline(skinbg, 0);
    TextDrawFont(skinbg, 1);


    managebox = TextDrawCreate(266.666656, 376.651977, "> SKINAUSWAHL <");
    TextDrawLetterSize(managebox, 0.449999, 1.600000);
    TextDrawAlignment(managebox, 1);
    TextDrawColor(managebox, -1);
    TextDrawSetShadow(managebox, 0);
    TextDrawSetOutline(managebox, 1);
    TextDrawBackgroundColor(managebox, 51);
    TextDrawFont(managebox, 2);
    TextDrawSetProportional(managebox, 1);


    usw...


    ocmd:skinauswahl(playerid,params[])
    {
    if(IsPlayerInArena[playerid]==1)
    {
    SendClientMessage(playerid, -1, "Bitte verlasse zuerst die Arena!");
    }
    else
    {
    SetPlayerPos(playerid, 2158.8457,1127.8928,23.3359);
    SetPlayerFacingAngle(playerid, 270.0);
    TogglePlayerControllable(playerid,0);
    SelectTextDraw(playerid, 0x00FFFFFF);
    TextDrawShowForPlayer(playerid, skinbg);
    TextDrawShowForPlayer(playerid, managebox);
    TextDrawShowForPlayer(playerid, rand1);
    TextDrawShowForPlayer(playerid, rand2);
    TextDrawShowForPlayer(playerid, rand3);
    TextDrawShowForPlayer(playerid, rand4);
    TextDrawShowForPlayer(playerid, liniemitte);
    TextDrawShowForPlayer(playerid, skinfertig);
    TextDrawShowForPlayer(playerid, skinback);
    TextDrawShowForPlayer(playerid, skinnext);
    }
    return 1;
    }



    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid == skinnext)
    {
    SetPlayerSkin(playerid, GetPlayerSkin(playerid)+1);
    return 1;
    }
    if(clickedid == skinback)
    {
    SetPlayerSkin(playerid, GetPlayerSkin(playerid)-1);
    return 1;
    }
    if(clickedid == skinfertig)
    {
    TogglePlayerControllable(playerid,1);
    SetPlayerPos(playerid, 2034.9680, 1342.7229, 10.8203);
    SetPlayerFacingAngle(playerid, 64.0991);
    TextDrawHideForPlayer(playerid, skinbg);
    TextDrawHideForPlayer(playerid, managebox);
    TextDrawHideForPlayer(playerid, rand1);
    TextDrawHideForPlayer(playerid, rand2);
    TextDrawHideForPlayer(playerid, rand3);
    TextDrawHideForPlayer(playerid, rand4);
    TextDrawHideForPlayer(playerid, liniemitte);
    TextDrawHideForPlayer(playerid, skinfertig);
    TextDrawHideForPlayer(playerid, skinback);
    TextDrawHideForPlayer(playerid, skinnext);
    return 1;
    }
    return 1;
    }

    @Jeffry@German_ScripterHD


    Dies funktioniert, nun habe ich ein weiteres Problem.
    Ich habe ein Textdraw mit "Next" "Back" und "Fertig" allerdings passiert bei "Fertig" das selbe wie bei "Next" also es geht einfach 1 skin weiter.


    public OnPlayerClickTextDraw(playerid, Text:clickedid){if(clickedid == skinnext){SetPlayerSkin(playerid, GetPlayerSkin(playerid)+1);return 1;}if(clickedid == skinback){SetPlayerSkin(playerid, GetPlayerSkin(playerid)-1);return 1;}if(clickedid == skinfertig){TogglePlayerControllable(playerid,1);SetPlayerPos(playerid, 2034.9680, 1342.7229, 10.8203);SetPlayerFacingAngle(playerid, 64.0991);TextDrawHideForPlayer(playerid, skinbg);TextDrawHideForPlayer(playerid, managebox);TextDrawHideForPlayer(playerid, rand1);TextDrawHideForPlayer(playerid, rand2);TextDrawHideForPlayer(playerid, rand3);TextDrawHideForPlayer(playerid, rand4);TextDrawHideForPlayer(playerid, liniemitte);TextDrawHideForPlayer(playerid, skinfertig);TextDrawHideForPlayer(playerid, skinback);TextDrawHideForPlayer(playerid, skinnext);return 1;}return 1;}

    Hey ich möchte, wenn man das Textdraw klickt, dass GetPlayerSkin(playerid); 1 hochgezählt wird also mit SetPlayerSkin(playerid, +1);


    so dachte ich es mir jedenfalls, aber so funktioniert es nicht, wie kann ich den skin hochzählen lassen?

    Ich Speicher alles in einer Datenbank.
    Und habe oben km Script ein enum mit allen Spieler Daten. Nun möchte ich das dem Killer die Morde immer bei einem kill hochgesetzt werden.


    Ich habe es mit sInfo [killerid][kills]=1;
    Allerdings setzt es dann nur auf 1 und es soll ja bei jedem kill +1 gemacht werden.


    Wie mache ich das

    Tach,


    Ich erhalte beim durchlaufen meines Pickups keine Deagle.




    if(listitem == 2)
    {
    if(deaglepoint[playerid] == 0)
    {
    // Deagle Point erstellen
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid, x, y, z);
    deaglepickup = AddStaticPickup(348, 1, x, y, z, 0);
    deaglepoint[playerid]=1;
    }
    else if(deaglepoint[playerid] == 1)
    {
    // Entfernen
    DestroyPickup(deaglepickup);
    deaglepoint[playerid]=0;
    }
    }



    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == armorpickup)
    {
    SetPlayerArmour(playerid, 100);
    }
    else if(pickupid == healpickup)
    {
    SetPlayerHealth(playerid, 100);
    }
    else if(pickupid == deaglepickup)
    {
    GivePlayerWeapon(playerid, 24, 900);
    }
    return 1;
    }

    So zum Beispiel:


    Käfig wird nicht entfernt.

    Tach,


    Ich erstelle wenn die Abfrage 0 ist einen Käfig und setze es auf 1.
    Nun möchte ich, wenn es auf 1 ist, den Käfig entfernen.
    Wie mache ich das nun?


    Denn ich kann unter OnDialogResponse nicht so etwas machen:
    new keafig = CreateObject..


    weil wenn ich dann beim entfernen DestroyObject(keafig); mache, bekomme ich: undefined symbol "keafig"



    if(dialogid==DIALOG_DEAGLE_EVENT)
    {
    if(listitem == 0)
    {
    // Käfig 1 erstellen
    if(deaglekafigeins[playerid] == 0)
    {
    new Float:k_x,Float:k_y,Float:k_z;
    GetPlayerPos(playerid, k_x, k_y, k_z);
    //CreateObject
    CreateObject(18856, k_x, k_y, k_z, 0.00000, 0.00000, 0.00000);
    deaglekafigeins[playerid]=1;
    }
    if(deaglekafigeins[playerid] == 1)
    {
    //RemoveBuilding
    deaglekafigeins[playerid]=0;
    }
    }
    return 1;
    }

    @Nils24hero



    [13:33:15] [WARNING] CMySQLConnection::Disconnect - no connection available
    [13:38:59] [WARNING] CMySQLConnection::Disconnect - no connection available
    [14:02:32] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:22] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:21] [WARNING] CMySQLConnection::Disconnect - no connection available
    [16:48:49] [WARNING] CMySQLConnection::Disconnect - no connection available
    [17:23:27] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:21] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:28] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:28] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:27] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:31] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:22] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:21] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:22] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:28] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:28] [WARNING] CMySQLConnection::Disconnect - no connection available
    [05:03:21] [WARNING] CMySQLConnection::Disconnect - no connection available
    [19:54:38] [WARNING] CMySQLConnection::Disconnect - no connection available
    [20:24:11] [WARNING] CMySQLConnection::Disconnect - no connection available


    Dieser Log ist scon älter, also nix neues, das habe ich schon behoben ^^


    @Dominik:)

    ocmd:setadmin(playerid,params[])
    {
    new pID,a_level;
    if(!isAdmin(playerid,7))return SendClientMessage(playerid, FARBE_VERBOTEN,"Du bist nicht berechtigt, den Befehl zu benutzen.");
    if(aDuty[playerid] == 0)return SendClientMessage(playerid, FARBE_GELB,"Du bist nicht im Dienst!");
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid, -1,"Nutzung: /setadmin [ID] [RANG]");
    sInfo[pID][alevel]=a_level;
    ----------------------------> savePlayer(pID);
    SendClientMessage(pID,FARBE_ROT,"Dein Adminrang wurde geändert.");
    SendClientMessage(playerid,FARBE_ROT,"Du hast den Adminrang geändert.");
    return 1;
    }


    In Setadmin führe ich auch savePlayer aus, das selbe auch bei OnPlayerDisconnect.



    public OnPlayerDisconnect(playerid, reason)
    {
    // Spieler Speichern
    savePlayer(playerid);
    // Spieler Resetten
    resetPlayer(playerid);



    // Leave Nachricht
    new pname[MAX_PLAYER_NAME], string[128 + MAX_PLAYER_NAME]; // 22
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string,sizeof(string), "{0FFF00}%s {005499}hat den Server verlassen" , pname);
    SendClientMessageToAll(0xFFFFFFFF, string);
    return 1;
    }



    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    // Speichern level,money
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    So weit ich aber gemerkt habe, stimmt an savePlayer was nicht, denn nichts wird gespeichert.
    Es ist immer so, wie es in der datenbank eingetragen ist.

    Hey, ich habe ein Problem.


    Und zwar kann ich Admin Rang nur über Datenbank vergaben. Woran das liegt, weiß ich nicht.
    Denn ich gebe per Script jemanden Admin z.b durch meine Gutschein Codes / Befehl (setadmin).
    Aber wenn ich dann in der Datenbank F5 drücke, steht der Spieler immer noch auf 0.
    Und hat im Spiel trotzdem den Rang.


    Wenn ich reconnecte, bin ich wieder Spieler.



    if(dialogid==DIALOG_GUTSCHEIN)
    {
    if(response)
    {
    // Einlösen
    if(strlen(inputtext))
    {
    if(!strfind(inputtext,Gutscheine,true))
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    sInfo[playerid][alevel]=7;
    SendClientMessage(playerid, FARBE_VERBOTEN, "Herzlichen Glückwunsch. Du hast einen * Admin Rang * Gutschein eingelöst. Du bist nun Stlv.Projektleiter!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, FARBE_VERBOTEN, "Dieser Gutschein existiert nicht.");
    }
    }
    else
    {
    // Abbruch
    SendClientMessage(playerid, FARBE_VERBOTEN, "Du möchtest keinen Gutschein einlösen.");
    }
    }



    public OnPasswordResponse(playerid)
    {
    new welcome_text[128];
    new num_fields;
    new num_rows;
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name,sizeof(name));
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    // passwort richtig
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][p_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);
    format(welcome_text, sizeof(welcome_text),"Herzlich Willkommen, %s",name);
    SendClientMessageToAll(0x009F14FF, welcome_text);
    }
    else
    {
    // passwort falsch
    SendClientMessage(playerid, FARBE_ROT,"Dein Passwort ist falsch.");
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "iR","{FFFF00}Infinity Reallife{FFFFFF}!\n\nDein Account wurde in der Datenbank gefunden.\n\nBitte Logge dich ein:","Einloggen","Abbrechen");
    }
    return 1;
    }



    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    // Speichern level,money
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }



    enum playerInfo {
    eingeloggt,
    level,
    p_id,
    alevel
    };



    new sInfo[MAX_PLAYERS][playerInfo];



    ocmd:setadmin(playerid,params[])
    {
    new pID,a_level;
    if(!isAdmin(playerid,7))return SendClientMessage(playerid, FARBE_VERBOTEN,"Du bist nicht berechtigt, den Befehl zu benutzen.");
    if(aDuty[playerid] == 0)return SendClientMessage(playerid, FARBE_GELB,"Du bist nicht im Dienst!");
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid, -1,"Nutzung: /setadmin [ID] [RANG]");
    sInfo[pID][alevel]=a_level;
    savePlayer(pID);
    SendClientMessage(pID,FARBE_ROT,"Dein Adminrang wurde geändert.");
    SendClientMessage(playerid,FARBE_ROT,"Du hast den Adminrang geändert.");
    return 1;
    }