/pay command error 006: must be assigned to an array

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
  • Hallo Leute,


    zunächst mal wollte ich mich vorstellen, das ist mein erster Thread hier.


    Ich scripte seit etwa einer Woche an meinem RP-Server (samp server scripten ist für mich neuland, hab vorher nur ein wenig Erfahrung mit c++ gehabt) und
    hänge gerade an meinem /pay command. Ich bekomme bei der variable für den Geldwert, der bezahlt werden soll folgenden Fehler :


    C:\Program Files (x86)\GTA SA\GTA San Andreas\SAMP Server\gamemodes\homerlive.pwn(1319) : error 006: must be assigned to an array


    edit: ahja, Zeile 1319 entspricht unten im quelltext zeile 8


    hier ist der dazugehörige Quelltext:

    if(!strcmp(cmd, "/pay", true, 4))
    {
    new tmp[256], str[256], giveplayerid, giveplayername[128], sendplayername[128];
    new Float:x, Float:y, Float:z;
    new Value;
    tmp = strtok(cmdtext, idx);
    giveplayerid = strval(tmp);
    Value = strrest(cmdtext, idx);

    if(strlen(tmp) == 0)
    {
    SendClientMessage(playerid, GELB, "USAGE: /pay ID AMOUNT");
    return 1;
    }
    if(Value <= GetPlayerMoney(playerid))
    {
    GetPlayerName(playerid, sendplayername, sizeof(sendplayername));
    GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
    GetPlayerPos(giveplayerid, x, y, z);

    if(IsPlayerInRangeOfPoint(playerid, 5, x, y, z))
    {
    GivePlayerMoney(playerid, -Value);
    GivePlayerMoney(giveplayerid, Value);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    format(str, sizeof(str),"%s took out some money and has given it to %s", sendplayername, giveplayername);
    SendClientMessage(i, GELB, str);
    }
    }
    }
    return 1;
    }


    ^^wahrscheinlich nicht das beste /pay script aber wie gesagt, ich mach das erst seit paar Tagen :) .


    habt ihr ne Idee woran das liegen kann ?


    danke

    **************************************************
    -Homers Light Roleplay (Unique script)
    -Server IP: 46.4.62.81:8996
    -Server Forum: http://www.hl-rp.forumprofi.de
    **************************************************

  • das hatte ich auch schon probiert aber da bekomm ich andere Errors:

    C:\Program Files (x86)\GTA SA\GTA San Andreas\SAMP Server\gamemodes\homerlive.pwn(1326) : error 033: array must be indexed (variable "Value")
    C:\Program Files (x86)\GTA SA\GTA San Andreas\SAMP Server\gamemodes\homerlive.pwn(1334) : error 035: argument type mismatch (argument 2)
    C:\Program Files (x86)\GTA SA\GTA San Andreas\SAMP Server\gamemodes\homerlive.pwn(1335) : error 035: argument type mismatch (argument 2)


    Quelle:


    if(Value <= GetPlayerMoney(playerid))
    GivePlayerMoney(playerid, - Value);
    GivePlayerMoney(giveplayerid, Value);


    :S

    **************************************************
    -Homers Light Roleplay (Unique script)
    -Server IP: 46.4.62.81:8996
    -Server Forum: http://www.hl-rp.forumprofi.de
    **************************************************


  • if(strcmp(cmd,"/pay",true) == 0){new giveplayerid,amount,name[MAX_PLAYER_NAME],Float:x,Float:y,Float:z;tmp = strtok(cmdtext,var); //var mit dem teil halt ersetzen ^^if(!strlen(tmp))return SendClientMessage(playerid,grau,"Verwende: /pay [playerid] [Menge]");giveplayerid = ReturnUser(tmp);tmp = strtok(cmdtext,var); //var mit dem teil halt ersetzen ^^if(!strlen(tmp))return SendClientMessage(playerid,grau,"Verwende: /pay [playerid] [Menge]");amount = strval(tmp); // da wird halt die zahl aus dem eingegeben rausgenommenif(amount < 1 || amount > 99999) return SendClientMessage(playerid,rot,"Text..."); //Text und amount zahlen anpassenGetPlayerPos(giveplayerid,x,y,z);if(IsPlayerInRangeOfPoint(playerid,10,x,y,z) && GetPlayerMoney(playerid) >= amount) //anpassen!{ GivePlayerMoney(giveplayerid,amount); GivePlayerMoney(playerid,-amount); return 1;}return 1;}


    der sollte funktionieren ^^


    hoffe konnte helfen

  • Auch das geht einfacher.



    if(!strcmp(cmd, "/pay", true) == 0)
    {
    new Parameter, String[128], pName[24];
    Parameter = strtok(cmdtext, idx);
    if(!Parameter[0])return SendClientMessage(playerid, GELB, "Verwendung: /pay [playerid] [Menge]");
    new pId = ReturnUser(Parameter); //falls die ReturnUser Funktion exestiert
    if(!IsPlayerConnected(pId))return SendClientMessage(playerid, GELB, "Info: Dieser Spieler ist offline");
    Parameter = strtok(cmdtext, idx);
    if(!Parameter[0])return SendClientMessage(playerid, GELB, "Verwendung: /pay [playerid] [Menge]");
    new Amount = strval(Parameter);
    if(Amount < 1)return SendClientMessage(playerid, Gelb, "Info: Der Betrag darf nicht unter 1$ liegen");
    if(GetPlayerMoney(playerid) < Amount)return SendClientMessage(playerid, GELB, "Info: Soviel Geld besitzt du nicht");

    GetPlayerName(playerid, pName, 24);
    format(String, 128, "Info: Du hast von %s %d$ erhalten", pName, Amount);
    SendClientMessage(pId, GELB, String);
    GetPlayerName(pId, pName, 24);
    format(String, 128, "Info: Du hast %s %d$ gegeben", pName, Amount);
    SendClientMessage(playerid, GELB, String);

    GivePlayerMoney(pId, Amount);
    GivePlayerMoney(playerid, -Amount);
    return true;
    }

    RFT

  • Troopers post hat mir geholfen.


    Hab jetzt ne neue variable erstellt > a


    und a = strval(Value) gemacht, der compiler spuckt nun zumindest keine errors mehr raus, teste mal gleich obs funktioniert und melde mich nochmal


    danke auch an die anderen die geschrieben haben :thumbup:



    klappt. Vielen Dank nochmal :)

    **************************************************
    -Homers Light Roleplay (Unique script)
    -Server IP: 46.4.62.81:8996
    -Server Forum: http://www.hl-rp.forumprofi.de
    **************************************************

    Einmal editiert, zuletzt von MacGyver_HL ()


  • Geht aber auch nicht.Paramter ist bei dir kein Array, würde als beim kompilieren einige Fehler geben :).