Spawn Butten Weg Macht. Wie Get Das
?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
-
-
Spawn Butten Weg Macht. Wie Get Das
?Eventuell Google nutzen?
http://gta-sa-mp.de/forum/3-sa…0-spawnfenster-entfernen/ -
if(strcmp(cmdtext, "/heal", true) == 0)
{
{
new str[122];
new name[MAX_PLAYER_NAME];
if(AccInfo[playerid][pVip] >= 1 || AccInfo[playerid][Level] >= 1)
if (!AccInfo[playerid][pVip]) return SendClientMessage(playerid, red, "** You are not a VIP Member to perform this command (/viphelp).");
SetPlayerHealth(playerid, 100);
PlayerPlaySound(playerid,1137,0.0,0.0,0.0);
SendClientMessage(playerid, COLOR_VIP,"* You typed (/heal) to set your health to 100.");
GetPlayerName(playerid, name, sizeof(name));
format(str,sizeof(str),"** %s VIP %s has used the (/heal) command.",Status, name);
MessageToAdmins(COLOR_MAUVE,str);
}
return 1;Normale Spieler und VIP's können den Befehl nutzen. Admins jedoch nicht? :s
Nur Admins und VIP's sollten es benutzen können..
-
if(!strcmp(cmdtext,"/heal",true)){
new string[128],name[MAX_PLAYER_NAME];GetPlayerName(playerid,name,MAX_PLAYER_NAME);
if(!AccInfo[playerid][pVip] && !AccInfo[playerid][Level]) return SendClientMessage(playerid,red,"** Your aren't a VIP Member or a Admin to perform this command (/viphelp)!");
SetPlayerHealth(playerid,100);
PlayerPlaySound(playerid,1137,0,0,0);
SendClientMessage(playerid,COLOR_VIP,"* You typed (/heal) to set your health to 100!");
return format(string,128,"** %s VIP %s has used the (/heal) command!",Status,name),MessageToAdmin(COLOR_MAUVE,string);
}
So klappt es -
if(!AccInfo[playerid][pVip]
!AccInfo[playerid][Level])return SendClientMessage(playerid,red,"** Your aren't a VIP Member or a Admin to perform this command (/viphelp)!");if(!AccInfo[playerid][pVip] && !AccInfo[playerid][Level]) return SendClientMessage(playerid,red,"** Your aren't a VIP Member or a Admin to perform this command (/viphelp)!");
Wenn der Admin kein VIP hat, hätte er es sonst nicht nutzen können (andersrum auch.. )
-
Moin,
ich hab ein Problem und zwar möchte ich das der Auto Increment bei ID 0 anfängt, setze ich dies auf 0, setzt er die vorherhige Zahl automatisch wieder. -
Push
//OnPlayerUpdate
new keys, ud, lr;
GetPlayerKeys(playerid, keys, ud, lr);
if(ud & KEY_UP || ud & -128)GibtGas[playerid] = true;
else GibtGas[playerid] = false;Habe einen weiteren Fehler..
Jeffry hat mir ja eine Funktion gegeben, die die Geschwindikeit des Spielers verändert, jedoch verändert es die Geschwindigkeit doch nicht..
Ich habe mir die Geschwindigkeit immer ausgeben lassen usw, und es sah so aus, als ob es klappt..Die Geschwindigkeit verändert sich nur, wenn ich laufe und dabei springe. Dann verändert sie sich aber nicht um die Geschwindigkeit, die ich angegeben habe, sondern um 100, 200 , 2000, 3000 ( unterschiedlich ) km/h ..
Hier nochmal ein Versuch, die Geschwindigkeit auf 30 km/h zu stellen ( OnPlayerUpdate )
if(!IsPlayerInAnyVehicle(playerid) && !Jumped[playerid])
{
new Float:speed; GetPlayerSpeed_New(playerid,speed);
return SetPlayerSpeed(playerid,30.0,speed);
}Und hier nochmal die Funktionen "GetPlayerSpeed_New" & "SetPlayerSpeed"
stock GetPlayerSpeed_New(playerid, &Float:speed) // By: [XST]O_x
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid)!=PLAYER_STATE_PASSENGER)
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
speed = ST[3];
return 1;
}
stock SetPlayerSpeed(playerid, Float:_speed, Float:_isspeed){
if(playerid == INVALID_PLAYER_ID)return INVALID_PLAYER_ID;
if(IsPlayerNPC(playerid))return 1;
if(IsPlayerInAnyVehicle(playerid))return 1;
new Float:x1, Float:y1, Float:z1;
GetPlayerVelocity(playerid, x1, y1, z1);
return SetPlayerVelocity(playerid, x1*(1+(1/(1+(_speed/_isspeed)))), y1*(1+(1/(1+(_speed/_isspeed)))), z1);
}Ist irgendwas falsch? ..
//Post2
new keys, ud, lr;
GetPlayerKeys(playerid, keys, ud, lr);
//Spielergeschwindigkeit..
else if(IsPlayerInAnyVehicle(playerid))
{
new vehicle = GetPlayerVehicleID(playerid);
if(keys & -128){
printf("2");
if(GetVehicleSpeed(vehicle) > float(VehSpeed[GetVehicleModel(vehicle)]))return SetVehicleSpeed(vehicle,float(VehSpeed[GetVehicleModel(vehicle)]));
else if(GetVehicleSpeed(vehicle) >= float((VehSpeed[GetVehicleModel(vehicle)]/2)))SetVehicleSpeed(vehicle,GetVehicleSpeed(vehicle) +10);
}
}Außerdem wird die Taste nur manchmal ausgegeben ...
//Post 1
Habe auch anstattud & -128 //&
ud & KEY_UP // &
ud == KEY_UP // &
ud & KEY_UPkeys & KEY_UP // &
keys == KEY_UP // &
keys & -128 // &
keys == -128Jedoch klappt nichts davon ..
-
Wie verbiete ich das Spawnen von Model ID 520 für alle Spieler?
-
Zitat von "Fuldara"
Wie verbiete ich das Spawnen von Model ID 520 für alle Spieler?
Abfragen, ob die eingegebene ID = 520 ist? -
Abfragen, ob die eingegebene ID = 520 ist?
{
if(car = 520 && car = 425 && car = 432)
SendClientMessage(playerid, COLOR_GREY, "** You are not allowed to spawn this vehicle.");
}Wie ich es aber verhindere weiß ich nicht^^
-
Wie lautet denn der gesamte Befehl?
@Fuldara: -
@Fuldara:
Wenn dann == und nicht nur =
Außerdem kannst du nicht alle 3 Bedingungen auf einmal erfüllen daher nutz statt &&
-
Die Syntax ist doch einfach

if(Bedingung)
{
//true
}
else
{
//false
}
Das selbe jetzt mit deinen Fahrzeugen
(und du solltest die Abfrage so machen: if(car == 520
car == 425
car == 432) da car ein Zwichenspeicher ist bzw. ein eindimensionaler und car != 520 UND 425 UND 432 sein kann 
-
//Der Code wird ausgeführt!
if(car == 520 || car == 425 || car == 432)return SendClientMessage(playerid,COLOR_GREY,"** You aren't allowed to spawn this vehicle!");
//Der Code wird nicht mehr ausgeführt, da return ....
Ab dem return SendClientMessage... wird nichts mehr ausgeführt. -
Danke euch allen, habs hinbekommen

-
Hallo allerseits

Ich habe anklickbare TextDraw's, allerdings möchte ich es so scripten, dass man nur ihren Text (string) anklicken kann.
Im Moment ist es allerdings so, dass man sie auch noch bis zum Bildschirmrand rechts und unten anklicken kann (
)
Also muss ich nicht mit der Maus direkt auf dem Textdraw sein, sondern kann auch rechts daneben oder darunter sein,
trotzdem werden sie ausgewählt und wenn ich klicke ausgeführt (falls sie anklickbar sind natürlich). Anscheinend gibt
es eine Art 'unsichtbares Anklickfeld' ?Screens:


OnGameModeInit (erstellen der Textdraws)
Spoiler anzeigen new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3;Spoiler anzeigen public OnGameModeInit()
{Spoiler anzeigen Textdraw0 = TextDrawCreate(489.000000, 136.833343, "usebox");
TextDrawLetterSize(Textdraw0, 0.000000, 24.053705);
TextDrawTextSize(Textdraw0, 149.500000, 0.000000);
TextDrawAlignment(Textdraw0, 1);
TextDrawColor(Textdraw0, 0);
TextDrawUseBox(Textdraw0, true);
TextDrawBoxColor(Textdraw0, 102);
TextDrawSetShadow(Textdraw0, 0);
TextDrawSetOutline(Textdraw0, 0);
TextDrawFont(Textdraw0, 0);Spoiler anzeigen Textdraw1 = TextDrawCreate(295.000000, 133.933319, "Admin");
TextDrawLetterSize(Textdraw1, 0.449999, 1.600000);
TextDrawAlignment(Textdraw1, 1);
TextDrawColor(Textdraw1, -1);
TextDrawSetShadow(Textdraw1, 0);
TextDrawSetOutline(Textdraw1, 1);
TextDrawBackgroundColor(Textdraw1, 51);
TextDrawFont(Textdraw1, 1);
TextDrawSetProportional(Textdraw1, 1);Spoiler anzeigen Textdraw2 = TextDrawCreate(181.000000, 171.266723, "Einfrieren");
TextDrawLetterSize(Textdraw2, 0.449999, 1.600000);
TextDrawAlignment(Textdraw2, 1);
TextDrawColor(Textdraw2, -1);
TextDrawSetShadow(Textdraw2, 0);
TextDrawSetOutline(Textdraw2, 1);
TextDrawBackgroundColor(Textdraw2, 51);
TextDrawFont(Textdraw2, 1);
TextDrawSetProportional(Textdraw2, 1);
TextDrawSetSelectable(Textdraw2, true);Spoiler anzeigen Textdraw3 = TextDrawCreate(181.000000, 200.199951, "Entfrieren");
TextDrawLetterSize(Textdraw3, 0.449999, 1.600000);
TextDrawAlignment(Textdraw3, 1);
TextDrawColor(Textdraw3, -1);
TextDrawSetShadow(Textdraw3, 0);
TextDrawSetOutline(Textdraw3, 1);
TextDrawBackgroundColor(Textdraw3, 51);
TextDrawFont(Textdraw3, 1);
TextDrawSetProportional(Textdraw3, 1);
TextDrawSetSelectable(Textdraw3, true);
}
Hier werden sie dem Spieler angezeigt:
Spoiler anzeigen public OnPlayerCommandText(playerid, cmdtext[]){if (strcmp("/admin", cmdtext, true, 10) == 0){TextDrawShowForPlayer(playerid, Textdraw0);TextDrawShowForPlayer(playerid, Textdraw1);TextDrawShowForPlayer(playerid, Textdraw2);TextDrawShowForPlayer(playerid, Textdraw3); SelectTextDraw(playerid, 0x00FF00FF);}return 0;}OnPlayerClickTextDraw():
Spoiler anzeigen public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(_:clickedid != INVALID_TEXT_DRAW) // If the player clicked a valid textdraw, continue with the coding. (_:var removes the Text: tag, to avoid tag mismatch)
{Spoiler anzeigen if(clickedid == Textdraw2) // unser beispiel textdraw ?
{
ShowPlayerDialog(playerid, DIALOG_ADMIN_EINFRIEREN, DIALOG_STYLE_INPUT, "Admin", "Gebe die playerid des zu einfrierenden Spielers ein", "Einfrieren", "Abbruch");
}Spoiler anzeigen TextDrawHideForPlayer(playerid, Textdraw0);
TextDrawHideForPlayer(playerid, Textdraw1);
TextDrawHideForPlayer(playerid, Textdraw2);
TextDrawHideForPlayer(playerid, Textdraw3);Spoiler anzeigen CancelSelectTextDraw(playerid);
}
return 0;
} -
Mit http://wiki.sa-mp.com/wiki/TextDrawTextSize kannst du den Bereich bestimmen, bis wohin du klicken kannst.
-
Von wo aus starten die x/y Koordinaten wenn ich TextDrawTextSize benutze? Von dem Punkt des Textdraws aus oder von dem Bildschirmrand/-ecke ?
-
Von dem Punkt wo sich dein TD befindet.
-
Funktioniert super, danke!

Nächste Frage: Wie bekomme ich aus dem inputtext eines Dialoges (DIALOG_STYLE_INPUT) eine playerid, bzw wie verwende ich sie weiter wenn sie eingegeben wurde?
Ich habe hier eine Abfrage, ob es eine Zahl ist, aber mit strlen(inputtext) kann ich nicht weiterarbeiten, was Dialoge angeht bin ich noch nicht so geübt und das war das
einzige, was mir eingefallen ist, da ich es mal woanders gesehen habe. strlen(inputtext) soll eig die playerid sein, aber nur inputtext nimmt er nicht
Spoiler anzeigen
if(!response) return SendClientMessage(playerid,-1,"Du hast den Vorgang abgebrochen.");
if(!IsNumeric(inputtext)) return SendClientMessage(playerid, -1, "Du musst eine playerid eingeben!");
new string[256];
TogglePlayerControllable(strlen(inputtext), 0);
format(string,sizeof(string),"Du hast %s eingefroren.", SpielerInfo[strlen(inputtext)][pName]);
SendClientMessage(playerid, -1, string);

