Beiträge von YaBroo
-
-
Meiner Meinung nach sollte man mit dem Speichersystem arbeiten womit man Erfahrung hat sofern man keine Lust hat umzusteigen.
Sollte es aber der Fall sein, das du noch keine Erfahrung mit einem der Speichersysteme hast, dann fang mit MySQL an.
Ich persöhnlich finde dini sau praktisch und sehr einfach -
if (strcmp(cmd, "/buylevel", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if (gPlayerLogged[playerid] != 0)
{
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
if(PlayerInfo[playerid][pLevel] >= 0)
{
new nxtlevel = PlayerInfo[playerid][pLevel]+1;
new costlevel = nxtlevel*levelcost;
new expamount = nxtlevel*levelexp;
new infostring[256];
if(GetPlayerMoney(playerid) < costlevel)
{
format(infostring, 256, " Du hast nicht genug Geld ($%d) !",costlevel);
SendClientMessage(playerid, COLOR_GRAD1, infostring);
return 1;
}
else if (PlayerInfo[playerid][pExp] < expamount)
{
format(infostring, 256, " Du brauchst mindestens %d Respekt Punkte, du hast [%d] !",expamount,PlayerInfo[playerid][pExp]);
SendClientMessage(playerid, COLOR_GRAD1, infostring);
return 1;
}
else
{
format(string, sizeof(string), "~g~LEVEL UP~n~~w~Du bist jetzt Level %d", nxtlevel);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
PlayerPlayMusic(playerid);
GivePlayerMoney(playerid, (-costlevel));
PlayerInfo[playerid][pLevel]++;
if(PlayerInfo[playerid][pDonateRank] > 0)
{
PlayerInfo[playerid][pExp] -= expamount;
new total = PlayerInfo[playerid][pExp];
if(total > 0)
{
PlayerInfo[playerid][pExp] = total;
}
else
{
PlayerInfo[playerid][pExp] = 0;
}
}
else
{
PlayerInfo[playerid][pExp] = 0;
}
/* if(PlayerInfo[playerid][pLevel] == 3)
{
Delete3DTextLabel(Noob[playerid]);
Noobi[playerid] = 0;
}*/
PlayerInfo[playerid][gPupgrade] = PlayerInfo[playerid][gPupgrade]+2;
GameTextForPlayer(playerid, string, 5000, 1);
format(infostring, 256, " Du hast dir Level %d für ($%d) gekauft. Tipp /upgrade ein.", nxtlevel, costlevel);
SendClientMessage(playerid, COLOR_GRAD1, infostring);
format(infostring, 256, " Du hast %d unspent Upgrade Punkte",PlayerInfo[playerid][gPupgrade]);
SendClientMessage(playerid, COLOR_GRAD2, infostring);
}
}
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht eingeloggt !");
}
}
return 1;
}Wie mache ich das der Befehl automatisch ist?
Jetzt weiß jeder was dein Vorhaben ist.
Einfach den cmd raus nehmen und deine Voraussetzung , wann es automatisch gehen soll, einfügen. -
ein mal global definieren fertig.
2x das public? 2x das forward? -
Ich bin gerade am überlegen, wo soll ich denn die vorhanden Admin variablen & Spielervaris her nehmen, dann müsste ich die neu aus der Datei mit dem entsprechendem Pfad laden sofern das Speichersystem Dini ist.
Am besten direkt in den GameMode. -
Da ich sehr viel Langeweile habe, mach ichs dir kostenlos
-
new Spielerdatei[64];
-
Nimm doch den stock aus wiki
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
} -
Resultieren aus dem Fehler.
Wenn du einen so lange Text haben möchtest, arbeite mit strcat. -
Zeig mal die vollständige Zeile, wenn dort der Pfad zum Script angegeben ist, dann ist es das Script, ansonsten auch includes.
Zeilen!?
-
Mir gefällt die Map sehr, jedoch finde ich es nicht gerade toll, das Zivis und Beamte quasi den selben Parkplatz belegen ohne Schranken oder jegliche Trennung der Zufahrten.
Zudem noch das es in der Tiefgarate(Beim runter fahren) kaum gesichert ist.7/10
-
ocmd:kick(playerid,params[])
{
new pID,string,grund[128];
if(!GetPVarInt(playerid,"LogIn") == 1)return SendClientMessage(playerid,ROT,"Logge dich bitte vorher ein.");
SendClientMessage(playerid,ROT,"1");
return 1;
}Probier es so
Siehe mein Edit, das ist falsch so wird returnt wenn er eingeloggt ist und die Nachricht wird niemals kommen.
Fehler bleibt Fehler, dein Lösungsweg und Fehlererkennung bleibt mir ein Rätsel gerade. -
So ein quatsch, mach einfach getpvar == 0.
Sonst returnt er bei 1 und das möchtest du nicht.ocmd:kick(playerid,params[])
{
new pID,string,grund[128];
if(GetPVarInt(playerid,"LogIn") == 0)return SendClientMessage(playerid,ROT,"Logge dich bitte vorher ein.");
SendClientMessage(playerid,ROT,"1");
return 1;
} -
Ja, dann setz dich in den Editor und mach dir schöne TextDraw's.
Wenn du sie speicherst sind sie in den Scriptfiles vorhanden und du musst lediglich kopieren und diese mit denen im Script ersetzen. -
Mit dem von dir genannten Befehl kannst du alles einstellen und createn.
Wie du schon sagst:Box & TextDrawText.Die Funktionen machst du dann über's Script.
@[rRP]ichecks TextDrawSetString ist nicht unbedingt von nöten.
-
Bei dem Textdraw' Editor brauchst du lediglich die amx. & pwn Datei(Zum editieren) & den Scriptfiles Ordner.
Kann es sein das dein Script, Befehle aus Filterscript's blockt?
Versuche mal Testweise einen standart samp GameMode zu verwenden um zu schauen, ob auch dort der Fehler auftritt. -
Verbinde die getplayerip funktion mir einer vari, die speicherst du mit der ip bei dini ab. SetPVarInt &oder zum Schluss dini_Setint.
Beim laden setzt du den pvar wieder & wie Dominik geschrieben hat, nutze strcmp zum überprüfen ob diese gleich ist.
Dafür rufst du die aktuelle IP und die aus der Datei auf.
http://wiki.sa-mp.com/wiki/GetPlayerIp
Hat doch ein optimales Beispiel vorhanden. -
-
Entferne die () nach
-
Zum Thema Schleifen & Loops -> [ SCRIPTING ] Loops/Schleifen - Erklaerung
Nach einer Schleife müsstest du noch die Fraktion abfragen, danach das format erstellen und dann abschicken an i(variable in der schleife).
Dann wird der output automatisch an alle Cops weiter geleitet.