Du hast nichts von dem gemacht...was ich gerade geschrieben habe.
Wie soll ich dir jetzt helfen? ![]()
Du hast nichts von dem gemacht...was ich gerade geschrieben habe.
Wie soll ich dir jetzt helfen? ![]()
Doch habe ich auch vorhin so eingefügt. Es klappt trotzdem nicht ![]()
if(newkeys & KEY_CTRL_BACK)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(IsPlayerInRangeOfPoint(playerid,10.0, X, -Y, Z)) OnPlayerCommandText(playerid,"/mv");
else if(IsPlayerInRangeOfPoint(playerid,10.0, X, -Y, Z)) OnPlayerCommandText(playerid,"/mv2");
}
else OnPlayerCommandText(playerid, "/enter");
}
Dann printe dir mal deine Position und die, die du eingegeben hast und vergleiche diese.
Bzw checke ob OnPlayerCommandText aufgerufen wird
Irgendwo muss ja der Fehler sein
Das meinte ich...
IsPlayerConnected ist da komplett überflüssig, da der Spieler ja online sein muss..um zu hupen...wird für offline Spieler eher schwierig haha xD
Stimmt jetzt nicht so ganz da man theoretisch Pakete an den Server senden kann mit denen man hupt (auch wenn das seeeeeeeeeeeeeeeeeehr unwahrscheinlich ist)
Hmm ka was Schuld ist aber es klappt nicht Pfffff
if(newkeys == KEY_CTRL_BACK)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(IsPlayerInRangeOfPoint(playerid,10.0, 1589.60828, -1638.15710, 14.57770)) OnPlayerCommandText(playerid,"/mv");
else if(IsPlayerInRangeOfPoint(playerid,10.0, 1544.68750, -1630.83167, 13.11210)) OnPlayerCommandText(playerid,"/mv2");
}
else OnPlayerCommandText(playerid, "/enter");
}
Stimmt jetzt nicht so ganz da man theoretisch Pakete an den Server senden kann mit denen man hupt
...klar...man kann so einiges. Kann auch eine Bot Armada draufpacken und alle hupen lassen, damit die Tore aufgehen, Mensch jetzt hab ichs dem Server aber gezeigt ![]()
Zumal man auch durch das package sagen könnte, dass man online ist...
In der 0.1 Version gab es auch mal einen Bug, dass gekickte Spieler immer noch Commands eingeben konnten haha ![]()
Aber sind wir mal realistisch und bleiben bei normalem Code Flow.
Hmm ka was Schuld ist aber es klappt nicht Pfffff
Ja, wir haben es verstanden. Es geht darum, dass du diese print Statements setzt und es herausfindest.
Hahhaha man man man.
So ich habs es war ein anderer key Code einfach ![]()
Kaliber Vielen Dank ![]()
Habe ein kleines Problem mit meinem alten Script.
das Enter Exit System funktioniert nur bei einem enum und bräuchte das für mehrere Systeme.
Hier sind meine Codes:
ocmd:enter(playerid, params[])
{
for(new x=0; x<sizeof(fmInfo); x++)
{
if(!fmInfo[x][fff_id])continue;
if(fmInfo[x][fhi_x]==0.0)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,fmInfo[x][fhx],fmInfo[x][fhy],fmInfo[x][fhz]))continue;
SetPlayerPos(playerid,fmInfo[x][fhi_x],fmInfo[x][fhi_y],fmInfo[x][fhi_z]);
SetPlayerInterior(playerid,fmInfo[x][ff_Interior]);
SetPlayerVirtualWorld(playerid,x);
}
for(new i=0; i<50; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, sbInfo[i][sbx], sbInfo[i][sby], sbInfo[i][sbz]))
{
SetPlayerInterior(playerid, sbInfo[i][sbint]);
SetPlayerPos(playerid, sbInfo[i][isbx], sbInfo[i][isby], sbInfo[i][isbz]);
SetPlayerVirtualWorld(playerid, i);
return 1;
}
}
for(new e=0; e<sizeof(hInfo); e++)
{
if(!hInfo[e][h_id])continue;
if(hInfo[e][ih_x]==0.0)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[e][h_x],hInfo[e][h_y],hInfo[e][h_z]))continue;
SetPlayerPos(playerid,hInfo[e][ih_x],hInfo[e][ih_y],hInfo[e][ih_z]);
SetPlayerInterior(playerid,hInfo[e][h_interior]);
SetPlayerVirtualWorld(playerid,e);
return 1;
}
for(new u=0; u<sizeof(bInfo); u++)
{
if(!bInfo[u][b_id])continue;
if(bInfo[u][ibx]==0.0)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,bInfo[u][bx],bInfo[u][by],bInfo[u][bz]))continue;
SetPlayerPos(playerid,bInfo[u][ibx],bInfo[u][iby],bInfo[u][ibz]);
SetPlayerInterior(playerid,bInfo[u][b_interior]);
SetPlayerVirtualWorld(playerid,u);
return 1;
}
return 0;
}
ocmd:exit(playerid, params[])
{
for(new x=0; x<sizeof(fmInfo); x++)
{
if(GetPlayerVirtualWorld(playerid)!=x)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,fmInfo[x][fhi_x],fmInfo[x][fhi_y],fmInfo[x][fhi_z]))continue;
SetPlayerPos(playerid, fmInfo[x][fhx], fmInfo[x][fhy], fmInfo[x][fhz]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
}
for(new i=0; i<50; i++)
{
if(GetPlayerInterior(playerid) == 0)continue;
if(IsPlayerInRangeOfPoint(playerid, 5.0, sbInfo[i][isbx], sbInfo[i][isby], sbInfo[i][isbz]))
{
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, sbInfo[i][sbx], sbInfo[i][sby], sbInfo[i][sbz]);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
}
for(new e=0; e<sizeof(hInfo); e++)
{
if(GetPlayerVirtualWorld(playerid)!=e)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[e][ih_x],hInfo[e][ih_y],hInfo[e][ih_z]))continue;
SetPlayerPos(playerid, hInfo[e][h_x], hInfo[e][h_y], hInfo[e][h_z]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
for(new u=0; u<sizeof(bInfo); u++)
{
if(GetPlayerVirtualWorld(playerid)!=u)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,bInfo[u][ibx],bInfo[u][iby],bInfo[u][ibz]))continue;
SetPlayerPos(playerid, bInfo[u][bx], bInfo[u][by], bInfo[u][bz]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
if(IsPlayerInRangeOfPoint(playerid, 5.0, 866.91089, 1857.31665, -30.40188))//Stadthallen Exit
{
SetPlayerPos(playerid, 1481.0325,-1772.2615,18.7958);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
return 0;
}
Wenn ich an einem Haus stehe und /enter eingebe kriege ich die Meldung dass dieser Befehl nicht existiert. Doch bei den StaticBuildings(enum,new) funktioniert es.
Hoffe ihr könnt mir weiter helfen.
Liebe Grüße,
Genadj_Andrenov
kriege ich die Meldung dass dieser Befehl nicht existiert
Das liegt daran, dass am Ende return 0; steht.
ocmd:enter(playerid, params[])
{
for(new x; x<sizeof(fmInfo); x++)
{
if(!fmInfo[x][fff_id] || fmInfo[x][fhi_x]==0.0 || !IsPlayerInRangeOfPoint(playerid,2,fmInfo[x][fhx],fmInfo[x][fhy],fmInfo[x][fhz]))continue;
SetPlayerPos(playerid,fmInfo[x][fhi_x],fmInfo[x][fhi_y],fmInfo[x][fhi_z]);
SetPlayerInterior(playerid,fmInfo[x][ff_Interior]);
SetPlayerVirtualWorld(playerid,x);
return 1;
}
for(new i; i<sizeof(sbInfo); i++)
{
if(!IsPlayerInRangeOfPoint(playerid, 5.0, sbInfo[i][sbx], sbInfo[i][sby], sbInfo[i][sbz])) continue;
SetPlayerInterior(playerid, sbInfo[i][sbint]);
SetPlayerPos(playerid, sbInfo[i][isbx], sbInfo[i][isby], sbInfo[i][isbz]);
SetPlayerVirtualWorld(playerid, i);
return 1;
}
for(new e; e<sizeof(hInfo); e++)
{
if(!hInfo[e][h_id] || hInfo[e][ih_x]==0.0 || !IsPlayerInRangeOfPoint(playerid,2,hInfo[e][h_x],hInfo[e][h_y],hInfo[e][h_z])) continue;
SetPlayerPos(playerid,hInfo[e][ih_x],hInfo[e][ih_y],hInfo[e][ih_z]);
SetPlayerInterior(playerid,hInfo[e][h_interior]);
SetPlayerVirtualWorld(playerid,e);
return 1;
}
for(new u; u<sizeof(bInfo); u++)
{
if(!bInfo[u][b_id]||bInfo[u][ibx]==0.0||!IsPlayerInRangeOfPoint(playerid,2,bInfo[u][bx],bInfo[u][by],bInfo[u][bz]))continue;
SetPlayerPos(playerid,bInfo[u][ibx],bInfo[u][iby],bInfo[u][ibz]);
SetPlayerInterior(playerid,bInfo[u][b_interior]);
SetPlayerVirtualWorld(playerid,u);
return 1;
}
return SendClientMessage(playerid,-1,"* Sie befinden sich an keinem Eingang!");
}
ocmd:exit(playerid, params[])
{
for(new x; x<sizeof(fmInfo); x++)
{
if(GetPlayerVirtualWorld(playerid)!=x || !IsPlayerInRangeOfPoint(playerid,2,fmInfo[x][fhi_x],fmInfo[x][fhi_y],fmInfo[x][fhi_z]))continue;
SetPlayerPos(playerid, fmInfo[x][fhx], fmInfo[x][fhy], fmInfo[x][fhz]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
if(GetPlayerInterior(playerid) != 0)
{
for(new i; i<sizeof(sbInfo); i++)
{
if(!IsPlayerInRangeOfPoint(playerid, 5.0, sbInfo[i][isbx], sbInfo[i][isby], sbInfo[i][isbz])) continue;
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, sbInfo[i][sbx], sbInfo[i][sby], sbInfo[i][sbz]);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
}
for(new e; e<sizeof(hInfo); e++)
{
if(GetPlayerVirtualWorld(playerid)!=e || !IsPlayerInRangeOfPoint(playerid,2,hInfo[e][ih_x],hInfo[e][ih_y],hInfo[e][ih_z]))continue;
SetPlayerPos(playerid, hInfo[e][h_x], hInfo[e][h_y], hInfo[e][h_z]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
for(new u; u<sizeof(bInfo); u++)
{
if(GetPlayerVirtualWorld(playerid)!=u || !IsPlayerInRangeOfPoint(playerid,2,bInfo[u][ibx],bInfo[u][iby],bInfo[u][ibz]))continue;
SetPlayerPos(playerid, bInfo[u][bx], bInfo[u][by], bInfo[u][bz]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
if(IsPlayerInRangeOfPoint(playerid, 5.0, 866.91089, 1857.31665, -30.40188))//Stadthallen Exit
{
SetPlayerPos(playerid, 1481.0325,-1772.2615,18.7958);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
return SendClientMessage(playerid,-1,"* Sie befinden sich an keinem Exit Punkt!");
}
Alles anzeigen
Probiers mal so ![]()
PS: Du kannst in den Schleifen auch die Variablen alle gleich nennen (nur so als Tipp) ist n bisschen übersichtlicher ![]()
Ahnung, warum mir das nicht ausgelesen wird?
cache_get_value_name(i, "verwendungszweck", InstructionInfo[i][iVerwendungszweck]);
cache_get_value_name(i, "time", InstructionInfo[i][iTime]);
enum e_Instructions_System
{
iID,
iMyNumber,
iOtherNumber,
iValue,
iOldValue,
iNewValue,
iVerwendungszweck[64],
iTime[64]
}
new InstructionInfo[MAX_INSTRUCTIONS][e_Instructions_System];
Versuche es als String auszugeben, was ja richtig wäre.
Versuchs mal so:
cache_get_value_name(i, "verwendungszweck", InstructionInfo[i][iVerwendungszweck], 64);
cache_get_value_name(i, "time", InstructionInfo[i][iTime], 64);
Du musst die maximale lände des strings angeben da es sonst Buggy ist hatte das problem auch mal.
Danke klappt, stehe aber gerade auf dem Schlauch.. xD
Die Formatierung haut einfach 0 hin.
Danke klappt, stehe aber gerade auf dem Schlauch.. xD
Die Formatierung haut einfach 0 hin.
Dann poste dazu mal den Dialog ![]()
Ach mist, ganz vergessen. Sorry.
format(DialogString, sizeof(DialogString),"Empfänger\tBetrag\tAlter Kontostand\tNeuer Kontostand\tVerwendungszweck\tUhrzeit\n%s\n"HTML_WHITE"%d\t"HTML_WHITE"$%d\t"HTML_RED"$%d\t"HTML_GREEN"$%d\t"HTML_WHITE"%s\t"HTML_WHITE"%s", DialogString, InstructionInfo[i][iOtherNumber], InstructionInfo[i][iValue], InstructionInfo[i][iOldValue], InstructionInfo[i][iNewValue], InstructionInfo[i][iVerwendungszweck], InstructionInfo[i][iTime]);
https://pastebin.com/UqqA448j
@Alva.
PS: Falls ein paar Zahlen länger sind, dann mach einfach \t\t bei den jeweiligen, sodass du mehr Abstand zum nächsten kriegst
so wirds nicht gehen.
versuchs so:
der Header des Dialogs muss ausserhalb der Schleife stehen:
strcat(string, "Empfänger\tBetrag\tAlter Kontostand\tNeuer Kontostand\tVerwendungszweck\tUhrzeit\n");
for().....{
format"(%s\nHTML_WHITE"%d\t"HTML_WHITE"$%d\t"HTML_RED"$%d\t"HTML_GREEN"$%d\t"HTML_WHITE"%s\t"HTML_WHITE"%s",stirng1, , InstructionInfo[i][iOtherNumber], InstructionInfo[i][iValue], InstructionInfo[i][iOldValue], InstructionInfo[i][iNewValue], InstructionInfo[i][iVerwendungszweck], InstructionInfo[i][iTime);
}
strcat(string, string1, sizeof(string1));
so wirds nicht gehen.
@Alva.
versuchs so:
der Header des Dialogs muss ausserhalb der Schleife stehen:
strcat(string, "Empfänger\tBetrag\tAlter Kontostand\tNeuer Kontostand\tVerwendungszweck\tUhrzeit\n");for().....{format"(%s\nHTML_WHITE"%d\t"HTML_WHITE"$%d\t"HTML_RED"$%d\t"HTML_GREEN"$%d\t"HTML_WHITE"%s\t"HTML_WHITE"%s",stirng1, , InstructionInfo[i][iOtherNumber], InstructionInfo[i][iValue], InstructionInfo[i][iOldValue], InstructionInfo[i][iNewValue], InstructionInfo[i][iVerwendungszweck], InstructionInfo[i][iTime);}strcat(string, string1, sizeof(string1));
Nene, der war schon richtig, habe ihn soeben ausgetestet. Habe jedoch vergessen, nach dem Titel eine neue Zeile zu setzen.
Und das mit der Schleife stimmt natürlich, ich wusste aber nicht, dass er eine Schleife hat, da in seinem geposteten Code keine vorhanden war.
Hallo Leute
Mein Arrest System ist so dass man einen Spieler nur durch die Aktion Gestellt oder nicht gestellt einsperren kann. Keine Spieler ID oder.
Der Spieler muss nur in deiner Nähe sein. Ich würde es gerne so haben dass man die Spieler ID eingeben kann und die Sekunden.
Kein gestellt oder nicht sondern einfach nur selber entscheiden kann wv Sekunden der sitzt. Natürlich muss der Spieler auch Wanteds besitzen.
z.B /arrest [Spieler-ID] [Sekunden]
Wie mache ich das??
Ich freue mich auf eure Hilfe.
if(strcmp(cmd, "/arrest", true) == 0)
{
if(IsACop(playerid))
{
if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 2)
{
SendClientMessage(playerid,rot,"Du bist nicht im Dienst!");
return 1;
}
if(IsPlayerInRangeOfPoint(playerid,2.0,X,Y,Z) || IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z))
{
new suspect = GetClosestPlayer(playerid);
if(IsACop(suspect))
{
SendClientMessage(playerid,rot,"Du kannst keine Polizisten einsperren");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "Benutze: /arrest [Aktion]");
SendClientMessage(playerid, COLOR_WHITE, "Aktion: 1-Nicht Gestellt, 2-Gestellt");
return 1;
}
if(strcmp(tmp, "1", true) == 0)
{
if(IsPlayerConnected(suspect))
{
if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
{
moneys = WantedLevel[suspect] * 1000;
new time = WantedLevel[suspect] * 120;
GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(WantedLevel[suspect] < 1)
{
SendClientMessage(playerid,rot, "Der Spieler wird nicht gesucht!");
return 1;
}
GivePlayerMoney(playerid, moneys/2);
FraktionsKasse[0] += moneys/2;
format(string, sizeof(string), "Du hast %s eingesperrt. Geldstrafe [%d$], Zeit %d Sekunden!", giveplayer,moneys, time);
SendClientMessage(playerid, COLOR_GREEN, string);
GivePlayerMoney(suspect, -moneys);
format(string, sizeof(string), "Du wurdest von %s für %d Sekunden eingesperrt. [Geldstrafe %d$]", sendername, time, moneys);
SendClientMessage(suspect,rot, string);
UnFreezePlayer(suspect);
ResetPlayerWeapons(suspect);
if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
{
format(string, sizeof(string), "<< Officer %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
OOCNews(0x1E4C99FF, string);
}
else if(PlayerInfo[playerid][pMember]==2)
{
format(string, sizeof(string), "<< Polizist %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
OOCNews(0x1E4C99FF, string);
}
else if(PlayerInfo[playerid][pLeader]==2)
{
format(string, sizeof(string), "<< FBI-Leader %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
OOCNews(0x1E4C99FF, string);
}
if(PolizeiZellen == 0)
{
SetPlayerInterior(suspect,0);
SetPlayerPos(suspect,X,Y,Z);
SetPlayerFacingAngle(suspect,270.000);
SetPlayerVirtualWorld(suspect,0);
PolizeiZellen += 1;
}
PlayerInfo[suspect][pJailTime] = time;
PlayerInfo[suspect][pJailed] = 1;
PlayerInfo[suspect][pArrested] += 1;
SetPlayerInterior(suspect, 0);
WantedPoints[suspect] = 0;
WantedLevel[suspect] = 0;
SetPlayerWantedLevel(suspect,0);
}
else
{
SendClientMessage(playerid,rot, "Es befindet sich kein Spieler in deiner Nähe");
}
}
else
{
SendClientMessage(playerid,rot, "Es befindet sich kein Spieler in deiner Nähe!");
}
}
else if(strcmp(tmp, "2", true) == 0)
{
if(IsPlayerConnected(suspect))
{
if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
{
moneys = WantedLevel[suspect] * 500;
new time = WantedLevel[suspect] * 60;
GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(WantedLevel[suspect] < 1)
{
SendClientMessage(playerid,rot, "Der Spieler ist nicht gesucht!");
return 1;
}
GivePlayerMoney(playerid, moneys/2);
FraktionsKasse[0] += moneys/2;
format(string, sizeof(string), "Du hast %s eingesperrt für %d$ und %d Sekunden!", giveplayer,moneys, time);
SendClientMessage(playerid, COLOR_GREEN, string);
GivePlayerMoney(suspect, -moneys);
format(string, sizeof(string), "Du wurdest von %s für %d Sekunden und für %d$ eingesperrt", sendername, time, moneys);
SendClientMessage(playerid,rot, string);
ResetPlayerWeapons(suspect);
if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
{
format(string, sizeof(string), "<< Officer %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
OOCNews(0x1E4C99FF, string);
}
else if(PlayerInfo[playerid][pMember]==2||PlayerInfo[playerid][pLeader]==2)
{
format(string, sizeof(string), "<< FBI-Agent %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
OOCNews(0x1E4C99FF, string);
}
else if(PlayerInfo[playerid][pMember]==3||PlayerInfo[playerid][pLeader]==3)
{
format(string, sizeof(string), "<< Soldat %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
OOCNews(0x1E4C99FF, string);
}
if(PolizeiZellen == 0)
{
SetPlayerInterior(suspect,0);
SetPlayerPos(suspect,X,Y,Z);
SetPlayerFacingAngle(suspect,270.000);
SetPlayerVirtualWorld(suspect,0);
PolizeiZellen += 1;
}
PlayerInfo[suspect][pJailTime] = time;
PlayerInfo[suspect][pJailed] = 1;
PlayerInfo[suspect][pArrested] += 1;
SetPlayerInterior(suspect, 0);
WantedPoints[suspect] = 0;
WantedLevel[suspect] = 0;
SetPlayerWantedLevel(suspect,0);
}
else
{
SendClientMessage(playerid,rot, "Es befindet sich kein Spieler in deiner Nähe!");
}
}
else
{
SendClientMessage(playerid, rot, "Spieler ist nicht online!");
}
}
}
else
{
SendClientMessage(playerid,rot, "Du bist nicht an der Zelle!");
}
}
else
{
SendClientMessage(playerid,rot, "Du bist kein Polizist");
}
return 1;
}
Mit freundlichen Grüßen
@HandsUper versuch es doch bitte einmal mit einem eigenen Code und nicht mit Copy & Paste in der Hoffnung das dir auf Breadfish jemand das Ding umschreibt...
Das ist eigentlich ein ziemlich simpler Command. Nutze für dein Vorhaben Zcmd oder Ocmd und Sscanf. Dadurch hast du gleich die Möglichkeit einen Command zu erstellen wo du die Parameter abfragen kannst.