strdel(Schrifttext[playerid][texttt],0, sscount[playerid]);
Von 0 bis zu dem Count:
Wäre so:
Hallo 0->0
allo 0->1
llo 0->2
lo 0->3
o 0->4
0->5
strdel(Schrifttext[playerid][texttt],0, sscount[playerid]);
Von 0 bis zu dem Count:
Wäre so:
Hallo 0->0
allo 0->1
llo 0->2
lo 0->3
o 0->4
0->5
Er hat nach einer Erklärung, und nicht nach einer Gegenfrage gefragt. Für dich und mich mag das vielleicht logisch und so sein, für ihn wohl nicht. Also bitte.
Zum Thema:
Der richtige Code ist:
GivePlayerMoney(playerid, SBizzInfo[bouse][sbTill]);
GivePlayerMoney(playerid, bizprice/4);
Warum muss hier kein "+=" hin?
Ganz einfach. "+=" wird verwendet um eine Variable um den Betrag X zu erhöhen, also so:
MeinGeld += 500; //500€ verdient.
Bei GivePlayerMoney brauchst du das nicht, da du übersetzt sagst: Gib dem Spieler "SBizzInfo[bouse][sbTill]" €. Damit fällt das "+=" weg. Also "+=" nur bei direkten Variablen verwenden.
Benenn doch deinen NPC mal um. Die sind wie Spieler, daher denke ich dass sie auch mindestens 3 Buchstaben brauchen.
Also "bf" wird eben zu wenig sein. Nenn ihn mal "abf".
Und auch hier ändern:
if(!strcmp(botname, "abf", true))
Nein!! Nicht so.
Einfach:
if(StehtNameInAdmin(playerid))
{
//Command ausführen, oder was auch immer...
}
Und das da: MAX_NAMEN_IN_ADMIN_FILE
Musst du mit der Anzahl der Namen in deiner .ini ersetzen.
In der Datei sollte es so stehen:
Name1=Hans
Name2=Peter
Name3=...
So kannst du abfragen ob der Name dann in der Datei steht:
stock StehtNameInAdmin(playerid)
{
for(new i=0; i<MAX_NAMEN_IN_ADMIN_FILE; i++)
{
new tmp[10];
format(tmp, sizeof(tmp), "Name%d", i);
if(!strcmp(SName[playerid],dini_Get("/AdminSystem/Namen.ini", tmp))) return true;
}
return false;
}
new a_cmd[256], a_idx;
a_cmd = strtok(cmdtext, a_idx);
if(!strcmp(a_cmd, "/adlogin", true))
{
new tmp[256];
tmp = strtok(cmdtext, a_idx);
if(!strlen(tmp)) return SendClientMessage(playerid,FRot,"{FFFFFF}*{FF0000} Fehler: /adlogin [Passwort]");
if(!strcmp(tmp, "Test", true))
{
new pColor[MAX_PLAYERS];
if(!strcmp(SName[playerid],"[GEC]Jig_Saw"))
{
if(pDuty[playerid] == 0)
{
pColor[playerid] = GetPlayerColor(playerid);
SetPlayerColor(playerid,0xFF0000FF);
SendClientMessage(playerid,FRot,"{FFFFFF}*{FF0000} [Server]: Erfolgreich Eingeloggt.");
SendClientMessageToAll(FRot,"{FFFFFF}*{FF0000} Owner [GEC]Jig_Saw is now Admin duty .");
TextDrawShowForPlayer(playerid,TextdrawADDuty0);
TextDrawShowForPlayer(playerid,TextdrawADDuty1);
print("-> [GEC] [GEC]Jig_Saw ist Admin duty ");
pDuty[playerid] = 1;
}
else if(pDuty[playerid] == 1)
{
TextDrawHideForPlayer(playerid,TextdrawADDuty0);
TextDrawHideForPlayer(playerid,TextdrawADDuty1);
SetPlayerColor(playerid,pColor[playerid]);
pDuty[playerid] = 0;
}
}
}
return 1;
}
if(strcmp(cmd, "/sup", true) == 0) {
if(IsPlayerConnected(playerid))
{
new save[512], pname[MAX_PLAYERS];
GetPlayerName(playerid, pname, sizeof(pname));
if(!strlen(cmdtext[5])) {
SCM(playerid, COLOR_GRAD2, "Verwendung: /sup [text]");
return 1;
}
if(TicketAngenommen[playerid] == 0) {
format(save,sizeof save,"Tickets/%s.ini",pname);
if(!dini_Exists(save) && TicketZeile[playerid] == 0) {
new adminmeldung[128];
format(adminmeldung, sizeof(adminmeldung), "%s hat ein Support-Ticket geschrieben", pname);
SAM(COLOR_YELLOW, adminmeldung);
SupportTicket[playerid] = 1;
TicketZeile[playerid] = 1;
dini_Create(save);
dini_Set(save,"Suptext",cmdtext[5]);
SCM(playerid, COLOR_YELLOW, "{33ccff}[SUPPORT] Du hast ein Ticket mit folgendem Text geöffnet:");
format(string, sizeof(string), "{33ccff}%s", cmdtext[5]);
SCM(playerid, COLOR_YELLOW, string);
SCM(playerid, COLOR_YELLOW, "{33ccff}[SUPPORT]Warte bis es ein Supporter annimmt!");
SCM(playerid, COLOR_YELLOW, "{33ccff}[SUPPORT]Du kannst noch mit /sup 2 weitere Zeilen anhängen");
return 1;
} else if(TicketZeile[playerid] == 1) {
new string2[128];
dini_Set(save, "Suptext2",cmdtext[5]);
SCM(playerid, COLOR_YELLOW, "{33ccff}[SUPPORT] Du hast folgendes an dein Ticket anhängt:");
format(string2, sizeof(string2), "%s", cmdtext[5]);
SCM(playerid, COLOR_YELLOW, string2);
TicketZeile[playerid] = 2;
return 1;
} else if(TicketZeile[playerid] == 2) {
new string3[128];
dini_Set(save, "Suptext3",cmdtext[5]);
SCM(playerid, COLOR_YELLOW, "{33ccff}[SUPPORT] Du hast folgendes an dein Ticket anhängt:");
format(string3, sizeof(string3), "%s", cmdtext[5]);
SCM(playerid, COLOR_YELLOW, string3);
TicketZeile[playerid] = 3;
return 1;
} else if(TicketZeile[playerid] == 3) {
SCM(playerid, COLOR_YELLOW, "{33ccff}[SUPPORT] Dein Ticket ist bereits randgefüllt!");
}
} else if(TicketAngenommen[playerid] == 1) {
new pID = DeinSupport[playerid];
new antwort[128], antwort2[128], DerFragende[MAX_PLAYER_NAME], DerSup[MAX_PLAYER_NAME];
GetPlayerName(playerid, DerFragende, sizeof (DerFragende));
GetPlayerName(pID, DerSup, sizeof (DerSup));
format(antwort, sizeof (antwort)," {33ccff}Deine Support-Nachricht: %s", cmdtext[5]);
SCM(playerid, COLOR_YELLOW, antwort);
format(antwort2, sizeof (antwort2), "{00ff6e}(( %s: %s ))", DerFragende, cmdtext[5]);
SCM(pID, COLOR_YELLOW, antwort2);
}
}
return true;
}
Musst nicht rausnehmen, kannste so machen:
forward dmt1update(playerid);
public dmt1update(playerid)
{
new string[200];
new tmptod = dm1tode[playerid];
if(tmptod==0) tmptod=1;
format(string, sizeof(string),"~y~f~r~x~y~L ~r~ll ~y~Kills:~r~%d ~y~Tode:~r~%d ~y~KD:~r~%0.2f ~y~Killserie:~r~%d ~y~DMSiege:~r~%d",dm1kills[playerid], dm1tode[playerid], float(dm1kills[playerid])/float(tmptod), ukills[playerid], Spieler[playerid][dm1siege]);
TextDrawSetString(DMT1[playerid],string);
}
Bei dmt1update:
new string[100];
zu:
new string[256];
EDIT:
Noch was.
dm1kills[playerid]/dm1tode[playerid]
Das ist TÖDLICH!!!
dm1tode kann ja auch null sein. Divide by 0 = ERROR
...
new Passwort[50];
new Namewbb[MAX_PLAYER_NAME];
GetPlayerName(playerid,Namewbb,MAX_PLAYER_NAME);
format(Passwort, sizeof(Passwort), "%s", dini_Get(Namewbb,"Passwort"));
...
Steht dein nativechecker an der letzten Stelle bei den Plugins im server.cfg?
if(strfind(text,"/adlogin Test", true) != -1) return 0;
Bei OnPlayerText.
Edit: Wenn es nur nach dem ersten Zeichen sein soll:
if(!strcmp(text[1],"/adlogin Test", true, 13)) return 0;
Bei mir war es einmal so, dass der NPC nicht getan hat weil der Name ein Zeichen drinnen hatte welches wohl nicht gut war. Wäre ein Versuch wert. Versuch mal das händler zu handler zu ändern (auch die NPC Files). Vielleicht mag dein Host die äöü nicht.
Das ist das einzige was ich vorgeschlagen kann.
new pColor[MAX_PLAYERS];
pColor[playerid] = GetPlayerColor(playerid);
Ich könnte wetten du hast bei OnPlayerDisconnect vergessen das da hinzumachen:
LOGGEDIN[playerid] = 0;
OnPlayerCommandText:
new cmd[256], tmp[256], tmp2[256], idx;
cmd = strtok(cmdtext, idx);
tmp = strtok(cmdtext, idx);
tmp2 = strtok(cmdtext, idx);
if(!strcmp(cmd, "/give", true))
{
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Error: /give [Parameter]");
if(!strcmp(tmp, "score", true))
{
if(!strlen(tmp2)) return SendClientMessage(playerid, 0xFF0000FF, "Error: /give score [Menge]");
SetPlayerScore(playerid, GetPlayerScore(playerid)+strval(tmp2));
}
if(!strcmp(tmp, "drugs", true))
{
if(!strlen(tmp2)) return SendClientMessage(playerid, 0xFF0000FF, "Error: /give drugs [Menge]");
GiveDrugs(playerid, strval(tmp2));
}
}
Wenn du es einem anderen Spieler geben willst, musst du halt dafür auch noch einen Parameter einbauen.
if(vhp>=650)
{
format(str, sizeof(str), "Schaden: ~g~%d%%", floatround(vhp/10.0));
}
else if(vhp>=400)
{
format(str, sizeof(str), "Schaden: ~y~%d%%", floatround(vhp/10.0));
}
else
{
format(str, sizeof(str), "Schaden: ~red~%d%%", floatround(vhp/10.0));
}
{
SendClientMessage(playerid,F_O, "Benutzung: /hs [ID]");
return 1;
}
if(ProxDetectorS(5.0,playerid,pID))
{
new str[128], Officer[MAX_PLAYER_NAME], Spieler_[MAX_PLAYER_NAME];
GetPlayerName(playerid, Officer, sizeof(Officer));
GetPlayerName(pID, Spieler_, sizeof(Spieler_));
format(str, sizeof(str), "Officer %s hat %s Handschellen angelegt", Officer, Spieler_);
SendClientMessageToAll(COLOR_LIGHTBLUE, str);
SetPlayerSpecialAction(pID,24);
SetPlayerAttachedObject(pID, 0, 19418, 6, -0.011000, 0.028000, -0.022000, -15.600012, -33.699977, -81.700035, 0.891999, 1.000000, 1.168000);
}
else
{
SendClientMessage(playerid,COLOR_RED,"Der Spieler ist nicht in deiner nähe!");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Beamter");
}
return 1;
}
ocmd:hsab(playerid,params[])
{
if(IsACop(playerid))
{
new pID;
if(sscanf(params, "u", pID))
{
SendClientMessage(playerid,F_O, "Benutzung: /hs [ID]");
return 1;
}
if(ProxDetectorS(5.0,playerid,pID))
{
new str[128], Officer[MAX_PLAYER_NAME], Spieler_[MAX_PLAYER_NAME];
GetPlayerName(playerid, Officer, sizeof(Officer));
GetPlayerName(pID, Spieler_, sizeof(Spieler_));
format(str, sizeof(str), "Officer %s hat %s Handschellen abgelegt", Officer, Spieler_);
SendClientMessageToAll(COLOR_LIGHTBLUE, str);
RemovePlayerAttachedObject(pID,0);
SetPlayerSpecialAction(pID, 0);
}
else
{
SendClientMessageToAll(COLOR_RED,"Der Spieler ist nicht in deiner nähe!");
}
}
else
Eingebettete Farben gehen bei TextDraws nicht. Du kannst entweder ~r~ ,~g~ , usw... benutzen. Oder du änderst die Farbe mit
http://wiki.sa-mp.com/wiki/TextDrawColor