Nein, leider nicht ![]()
//Edit:
Aber kannst ja z.B. einen Callback für mehrere Dinge nehmen:
Nein, leider nicht ![]()
//Edit:
Aber kannst ja z.B. einen Callback für mehrere Dinge nehmen:
Jap, so hab ich es jetzt auch gemacht, wundert mich nur dass es so eine funktion nicht gibt, würde ne menge zeilen sparen^^
wo genau ist eig der vorteil bei ocmd commands? bei tutorial video wird das oft benutzt, welche vorteil hat es zu den "alten" if(strcmp("/..." ? und wie muss das aussehen wenn ich bei ocmd mehrere cmds einer funktion zuweise möchte?
Gibt es bessere alternativen? Oder ist es performance mässig wayne wie ich die commands erstelle?
ocmd 2.1.1 [ Update 3.11.2013 ]
Im ersten Abschnitt findest du schon einige Vorteile ![]()
Mehrere Befehle in "einem" Befehl:
ocmd@2:help,hilfe(playerid,params[])
{
SendClientMessage(playerid,0xffffffff,"Du hast /help oder /hilfe eingegeben");
return 1;
}
Gibt es bessere alternativen? Oder ist es performance mässig wayne wie ich die commands erstelle?
Ob es bessere, also von der Performance her, Alternativen gibt, weiß ich nicht, aber es gibt auch noch DCMD (DCMD Tutorial), ZCMD (http://forum.sa-mp.com/showthread.php?t=91354) und viel mehr. ![]()
Danke!
Bilde ich mir das ein, oder erscheinen objekte deutlich später als in samp vor 2,3 jahren? Meine Speedbumbs haben keine wirkung wenn man zu schnell ist. hat das was mit streamdistance zutun?
hat das was mit streamdistance zutun?
Das kommt darauf an, es gibt Objekte von denen man die streamdistance nicht verändern kann.
Allerdings kannst du es durchaus mal mit der streamdistance versuchen ![]()
Oder du hast zuviele Objekte erstellt, mit F5 kannste ja mal schauen wie viele ObjektSoltsInUse sind ![]()
Ich schau gleich mal wieiele es sind.
Wie kann ich das Alter dem inputtext zuordnen?
if(dialogid == SET_CHAR_AGE)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Your Age Cannot be Blank");
ShowPlayerDialog(playerid,SET_CHAR_AGE,DIALOG_STYLE_INPUT,"Age","How old are you?\nType in your charachters age.","Continue","Cancel");
return 1;
}
if(!response)
{
Kick(playerid);
return 1;
}
if (strval(inputtext) <= 15)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Invalid Age.");
SendClientMessage(playerid, 0xFFFFFFFF, "Your Charachter must be at least 16 years old.");
ShowPlayerDialog(playerid,SET_CHAR_AGE,DIALOG_STYLE_INPUT,"Age","How old are you?\nType in your charachters age.","Continue","Cancel");
return 1;
}
//pInfo[playerid][pAge] = inputtext; // ??????
Wie muss das pInfo aussehen?
Wie muss das pInfo aussehen?
Einfach so:
pInfo[playerid][pAge] = strval(inputtext);
Was muss ich abfragen, wenn ich bei einer listen infobox den rechten Button zuweisen will? also ich hab on response und on die listimen. wenn ich else ans ende mache, kann ich nichts mehr anklicken.
Ich will dass es eins zurück geht, also einen alten dialog "verlinken" nur was frag ich dazu ab?
Der Befehl wurde nicht gefunden. Bitte verwende /help
Wo muss man sowas einbauen wen es den Befehl nicht gibt am Server :>?
Ganz unten in OnPlayerCommandText vor dem return:
else
{
//MESSAGE
}
Function OnPlayerCommandText(playerid, cmdtext[])
{
M_OnPlayerCommandText(playerid,cmdtext);
new string[256];
new playermoney;
new sendername[MAX_PLAYER_NAME];
new giveplayer[MAX_PLAYER_NAME];
new playername[MAX_PLAYER_NAME];
new cmd[256];
new tmp[256];
new giveplayerid, moneys, idx;
new dancestyle;
cmd = strtok(cmdtext, idx);
GetPlayerName(playerid,sendername,sizeof(sendername));
dcmd(gocords,7,cmdtext);
dcmd(zollcontrol,11,cmdtext);
dcmd(givedonator,11,cmdtext);
dcmd(arbobjid,8,cmdtext);
dcmd(arb,3,cmdtext);
dcmd(deletearb,9,cmdtext);
dcmd(deletearbfor,12,cmdtext);
dcmd(arball,6,cmdtext);
dcmd(arbforall,9,cmdtext);
dcmd(arbobj,6,cmdtext);
else
{
SendClientMessage(playerid, COLOR_WITHE, "Der Befehl wurde nicht gefunden. Bitte verwende /help");
}
Passt so oder :>
Zum else gehört immer ein if.
ich arbeite mit ocmd und habe das so gelöst:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp("/befehl", cmdtext, true, 7) || strcmp("/befehl", cmdtext, true, 7)) // muss nicht "/befehl" sein, kann alles mögliche sein
{
SendClientMessageEx(playerid, COLOR_WHITE, "Der befehl '%s' existiert nicht.", cmdtext);
return 1;
}
return 0;
}
Kann ich in einer SendClientMessage mit string die Farbe Wechseln? (mitten im text!)
Denn bei " format(string, sizeof(string), "[PLAYER INFO]:{0xFF4500AA} Gender - %d | Native Orig..... " wird die Farbe durch { und } nicht gewechselt, er zeigt die klammern als text ![]()
Wie kann man das lösen?
Bei so etwas einfach die ersten zwei und die letzten zwei Zeichen wegnehmen, dann sieht das so aus und funktioniert auch in den Klammern:
{FF4500}
Das heißt: RGBA (0xFF4500AA) zu RGB (FF4500).
Hi, habe ein Befehl erstellt womit ich ein Spieler spectate, der funktioniert auch nur wenn ich aus dem Spec rausmöchte, per Tastendrück, funktioniert das nicht.
Der Befehl
CMD:sspec(playerid,params[])
{
if(!CheckAdminName(playerid)) return 0;
new pID, tmp[20], idx;
tmp = strtok(params, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,0x6FFFFFFF,"ERROR:: /sspec [ID]");
if(IsNumeric(tmp)) pID = strval(tmp);
else pID = ReturnPlayerID(tmp);
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0x6FFFFFFF,"The Player is not online");
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(pID));
SetPlayerInterior(playerid, GetPlayerInterior(pID));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, pID);
return 1;
}
OnPlayerKeyStateChance (wird keine der Funktionen aufgerufen)
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (PRESSED(KEY_ANALOG_RIGHT))
{
if(!CheckAdminName(playerid)) return 0;
TogglePlayerSpectating(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid, 0);
SendClientMessage(playerid,-1,"Taste gedrückt");
}
return 1;
}
Wie heißt der Name fürs Script der Taste "Z"? Also sowas wie KEY_NO für OnPlayerKeyStateChange.
Steht ja direkt nicht drin
Habs aber, danke.
Wieso wird das Objekt nicht langsam geöffnet sondern einfach sofort zur neuen Position gesetzt?
MoveDynamicObject(sanadoor2, 1253.35315, -1822.81628, 12.43170, 2.5, 0.00000, 0.00000, 90.00000);
Alles anzeigenHi, habe ein Befehl erstellt womit ich ein Spieler spectate, der funktioniert auch nur wenn ich aus dem Spec rausmöchte, per Tastendrück, funktioniert das nicht.
Der Befehl
CMD:sspec(playerid,params[]){ if(!CheckAdminName(playerid)) return 0; new pID, tmp[20], idx; tmp = strtok(params, idx); if(!strlen(tmp)) return SendClientMessage(playerid,0x6FFFFFFF,"ERROR:: /sspec [ID]"); if(IsNumeric(tmp)) pID = strval(tmp); else pID = ReturnPlayerID(tmp); if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0x6FFFFFFF,"The Player is not online"); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(pID)); SetPlayerInterior(playerid, GetPlayerInterior(pID)); TogglePlayerSpectating(playerid, 1); PlayerSpectatePlayer(playerid, pID); return 1;}
OnPlayerKeyStateChance (wird keine der Funktionen aufgerufen)
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){ if (PRESSED(KEY_ANALOG_RIGHT)) { if(!CheckAdminName(playerid)) return 0; TogglePlayerSpectating(playerid, 0); SetPlayerVirtualWorld(playerid, 0); SetPlayerInterior(playerid, 0); SendClientMessage(playerid,-1,"Taste gedrückt"); } return 1;}
hast du es mal Geprintet ob das Public überhaupt ausgeführt wurde ?