new Float:x,Float:y,Float:z;
if(!IsPlayerInRangeOfPoint(playerid,3,x,y,z)
Die zwei Zeilen entfernen, die machen keinen Sinn, da x, y und z ohnehin 0 ist.
Beiträge von Jeffry
-
-
aufmucken
Sowas? Aufmucken kann man halt in vielerlei Hinsicht.
"PED","fucku" -
Dann ändere das
if(!IsPlayerNPC(playerid)) SetPlayerSkin(playerid,Spieler[playerid][pSkin]);
zu:
if(!IsPlayerNPC(playerid))
{
printf("Setze Skin von ID %d zu: %d", playerid, Spieler[playerid][pSkin]);
SetPlayerSkin(playerid,Spieler[playerid][pSkin]);
}Dann poste was im Server Log steht, wenn du spawnst. Es geht darum zu sehen, ob zum einen der Code überhaupt aufgerufen wird, und zum anderen ob der Wert in der pSkin Variable korrekt ist.
-
Das muss man ausprobieren, ich kann dir das Prinzip mal aufzeigen, dann kannst du dich daran versuchen.
1) Du erstellst ein Objekt an der Position an der sich der Text bewegen soll. Dahinter erstellst du das gleiche Objekte nochmal.
2) Beide Objekte texturierst du mit einem Text: http://forum.sa-mp.com/showthread.php?t=361737
3) Nun baust du etwas um die beiden Objekte herum, damit man nur den eigentlichen Teil sieht (maximal die Größe eines der beiden Objekte, sonst musst du ein drittes erstellen).
4) Dann lässt du beide Objekte langsam in die gleiche Richtung bewegen (MoveObject). Wird OnObjectMoved aufgerufen, so wird das Objekt wieder an seine Ausgangsposition (die des letzten Objektes) gesetzt, und es bewegt sich danach wieder (MoveObject) in die gleiche Richtung.Wichtig ist eben, dass links und rechts das Objekt übersteht, also da muss etwas (Wand?) davor sein, damit man das nicht sieht.
-
Ja. Standardmäßig ist der ja auf false, daher kann man ihn weg lassen.
-
if(!strcmp(vehicle, "-")) return SendClientMessage(playerid, 0xFF0000FF, "Error: Fehlerhafte Eingabe.");
Wobei das natürlich nur eine Schönheitskorrektur ist.
-
@xMichael:
Das ist bis dahin die interessanteste Methode, die ich gesehen habe, so einen Befehl zu machen. Die IDs in das Array zu schreiben. Ist zwar nicht ganz so performant wie es mit IsNumeric zu prüfen, aber es hat was.Allerdings müsstest du noch abfragen, ob man nur ein Minus eingegeben hat ("-"), macht man das nämlich, bekommt man einen Lankstalker.
Und:
for(new i = 0; i < 211; i++)
zu:
for(new i = 0; i < 212; i++)EDIT: (Post unten)
@xMichael: Haha ok! Wäre trotzdem gut, wenn du die Änderungen machst, falls sich das mal jemand raus kopiert.
-
Habe es eigentlich abgerechnet, sollte passen
Dann hast du dich verzählt.
47 Zeichen.47 + 24 = 71 => + EOS = 72
Ich habe etwas mehr genommen, man weiß ja nie. Sicher ist sicher.
-
Ich hab mich einfach mal hier bedient und den Fehler ausgebessert: http://forum.sa-mp.com/showthread.php?t=291633&page=3
Den Rest habe ich gelassen, da ich denke, du passt das ohnehin an deine Bedürfnisse an, aber so hast du alles was du brauchst.
Spoiler anzeigen #include <a_samp>Spoiler anzeigen #define l_red 0xFF0000AA
#define l_green 0x33FF33AASpoiler anzeigen new aVehicleNames[212][] =
{
{"Landstalker"},
{"Bravura"},
{"Buffalo"},
{"Linerunner"},
{"Perrenial"},
{"Sentinel"},
{"Dumper"},
{"Firetruck"},
{"Trashmaster"},
{"Stretch"},
{"Manana"},
{"Infernus"},
{"Voodoo"},
{"Pony"},
{"Mule"},
{"Cheetah"},
{"Ambulance"},
{"Leviathan"},
{"Moonbeam"},
{"Esperanto"},
{"Taxi"},
{"Washington"},
{"Bobcat"},
{"Mr Whoopee"},
{"BF Injection"},
{"Hunter"},
{"Premier"},
{"Enforcer"},
{"Securicar"},
{"Banshee"},
{"Predator"},
{"Bus"},
{"Rhino"},
{"Barracks"},
{"Hotknife"},
{"Trailer 1"},
{"Previon"},
{"Coach"},
{"Cabbie"},
{"Stallion"},
{"Rumpo"},
{"RC Bandit"},
{"Romero"},
{"Packer"},
{"Monster"},
{"Admiral"},
{"Squalo"},
{"Seasparrow"},
{"Pizzaboy"},
{"Tram"},
{"Trailer 2"},
{"Turismo"},
{"Speeder"},
{"Reefer"},
{"Tropic"},
{"Flatbed"},
{"Yankee"},
{"Caddy"},
{"Solair"},
{"Berkley's RC Van"},
{"Skimmer"},
{"PCJ-600"},
{"Faggio"},
{"Freeway"},
{"RC Baron"},
{"RC Raider"},
{"Glendale"},
{"Oceanic"},
{"Sanchez"},
{"Sparrow"},
{"Patriot"},
{"Quad"},
{"Coastguard"},
{"Dinghy"},
{"Hermes"},
{"Sabre"},
{"Rustler"},
{"ZR-350"},
{"Walton"},
{"Regina"},
{"Comet"},
{"BMX"},
{"Burrito"},
{"Camper"},
{"Marquis"},
{"Baggage"},
{"Dozer"},
{"Maverick"},
{"News Chopper"},
{"Rancher"},
{"FBI Rancher"},
{"Virgo"},
{"Greenwood"},
{"Jetmax"},
{"Hotring"},
{"Sandking"},
{"Blista Compact"},
{"Police Maverick"},
{"Boxville"},
{"Benson"},
{"Mesa"},
{"RC Goblin"},
{"Hotring Racer A"},
{"Hotring Racer B"},
{"Bloodring Banger"},
{"Rancher"},
{"Super GT"},
{"Elegant"},
{"Journey"},
{"Bike"},
{"Mountain Bike"},
{"Beagle"},
{"Cropdust"},
{"Stunt"},
{"Tanker"},
{"Roadtrain"},
{"Nebula"},
{"Majestic"},
{"Buccaneer"},
{"Shamal"},
{"Hydra"},
{"FCR-900"},
{"NRG-500"},
{"HPV1000"},
{"Cement Truck"},
{"Tow Truck"},
{"Fortune"},
{"Cadrona"},
{"FBI Truck"},
{"Willard"},
{"Forklift"},
{"Tractor"},
{"Combine"},
{"Feltzer"},
{"Remington"},
{"Slamvan"},
{"Blade"},
{"Freight"},
{"Streak"},
{"Vortex"},
{"Vincent"},
{"Bullet"},
{"Clover"},
{"Sadler"},
{"Firetruck LA"},
{"Hustler"},
{"Intruder"},
{"Primo"},
{"Cargobob"},
{"Tampa"},
{"Sunrise"},
{"Merit"},
{"Utility"},
{"Nevada"},
{"Yosemite"},
{"Windsor"},
{"Monster A"},
{"Monster B"},
{"Uranus"},
{"Jester"},
{"Sultan"},
{"Stratum"},
{"Elegy"},
{"Raindance"},
{"RC Tiger"},
{"Flash"},
{"Tahoma"},
{"Savanna"},
{"Bandito"},
{"Freight Flat"},
{"Streak Carriage"},
{"Kart"},
{"Mower"},
{"Duneride"},
{"Sweeper"},
{"Broadway"},
{"Tornado"},
{"AT-400"},
{"DFT-30"},
{"Huntley"},
{"Stafford"},
{"BF-400"},
{"Newsvan"},
{"Tug"},
{"Trailer 3"},
{"Emperor"},
{"Wayfarer"},
{"Euros"},
{"Hotdog"},
{"Club"},
{"Freight Carriage"},
{"Trailer 3"},
{"Andromada"},
{"Dodo"},
{"RC Cam"},
{"Launch"},
{"Police Car (LSPD)"},
{"Police Car (SFPD)"},
{"Police Car (LVPD)"},
{"Police Ranger"},
{"Picador"},
{"S.W.A.T. Van"},
{"Alpha"},
{"Phoenix"},
{"Glendale"},
{"Sadler"},
{"Luggage Trailer A"},
{"Luggage Trailer B"},
{"Stair Trailer"},
{"Boxville"},
{"Farm Plow"},
{"Utility Trailer"}
};Spoiler anzeigen public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[20], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/veh", true) == 0)
{
new String[200];
new tmp[20];
new Float:x, Float:y, Float:z;Spoiler anzeigen tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, l_red, "You didn't give a vehicle name");
new vehicle;Spoiler anzeigen if(!IsNumeric(tmp)) vehicle = GetVehicleModelIDFromName(tmp);
else vehicle = strval(tmp);Spoiler anzeigen if(vehicle < 400 || vehicle > 611) return SendClientMessage(playerid, l_red, "That vehicle name was not found");Spoiler anzeigen new Float:a;
GetPlayerFacingAngle(playerid, a);
GetPlayerPos(playerid, x, y, z);Spoiler anzeigen if(IsPlayerInAnyVehicle(playerid) == 1)
{
GetXYInFrontOfPlayer(playerid, x, y, 8);
}
else
{
GetXYInFrontOfPlayer(playerid, x, y, 5);
}Spoiler anzeigen new PlayersVehicle = CreateVehicle(vehicle, x, y, z, a+90, -1, -1, -1);
LinkVehicleToInterior(PlayersVehicle, GetPlayerInterior(playerid));Spoiler anzeigen format(String, sizeof(String), "You have spawned a %s", aVehicleNames[vehicle - 400]);
SendClientMessage(playerid, l_green, String);
return 1;
}
return 0;
}Spoiler anzeigen stock strtok(const string[], &index) //©Jeffry
{
new result[20], length = strlen(string), i = index;
while ((i < length) && (string[i] == ' ')) i++;
strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
index++;
return result;
}Spoiler anzeigen stock IsNumeric(str[]) //©Jeffry
{
if(!strlen(str)) return 0;
for (new i = 0, j = strlen(str); i < j; i++) if(str[i] > '9' || str[i] < '0') return 0;
return 1;
}Spoiler anzeigen GetVehicleModelIDFromName(vname[])
{
for(new i = 0; i < 211; i++)
{
if(strfind(aVehicleNames[i], vname, true) != -1)
return i + 400;
}
return -1;
}Spoiler anzeigen stock GetXYInFrontOfPlayer(playerid, &Float:x2, &Float:y2, Float:distance)
{
new Float:a;Spoiler anzeigen GetPlayerPos(playerid, x2, y2, a);
GetPlayerFacingAngle(playerid, a);Spoiler anzeigen if(GetPlayerVehicleID(playerid))
{
GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
}Spoiler anzeigen x2 += (distance * floatsin(-a, degrees));
y2 += (distance * floatcos(-a, degrees));
} -
Das liegt an der Verzögerung zwischen dem Absenden des Dialogs und der Cache-Rückgabe.
Du musst bei OnPlayerRequestClass die Position sowie die Camera Position setzen, falls der Spieler nicht eingeloggt ist. Die Koordinaten (in etwa) habe ich hier gefunden: http://forum.sa-mp.com/showpost.php?p=2566177&postcount=4Übrigens:
new mysqlquery[70];
könnte theoretisch zu wenig sein, wenn der Spieler die vollen 24 Zeichen in Anspruch nimmt.
Schreibe lieber:
new mysqlquery[55 + MAX_PLAYER_NAME];
Dann bist du auf der sicheren Seite. -
Möglicherweise liegt der andere Fehler an diesem Klammerfehler.
COMMAND:jobholz(playerid,params[])
{
if(Spieler[playerid][pJob] == 0) return SendClientMessage(playerid,ROT,"Du hast noch keinen Job!");
new cmd[15],string[129];
if(sscanf(params,"s[15]",cmd)) return SendClientMessage(playerid,ROT,"Verwende: /job [start/stop]");
if(Spieler[playerid][pJob] == 4)
{
if(!IsPlayerInRangeOfPoint(playerid,5.0,HOLZMANN)) return SendClientMessage(playerid,WEISS,"Du bist nicht in der Nähe des Waldes! (Haus)");
ShowJobAnzeige(playerid);
SetPlayerSkin(playerid,133);
BaumWeg[playerid] = 0;
ErstellungObjekteHolz(playerid);
imHolzfaller[playerid] = true;
SendClientMessage(playerid,GRAU,"");
SendClientMessage(playerid,WEISS,"Schmeiß nun ein paar Bäume um! (Map Icon wurde gesetzt) - Zum Fällen am Baum 'Feuer Taste' drücken!");
ERText(playerid,"Job gestartet~n~Schmeiss nun ein paar Baeume um!~n~Um den Job zu beenden, benutze:~n~/job",30000);
PlayerTextDrawShow(playerid,Anzeige[playerid][0]);
PlayerTextDrawShow(playerid,Anzeige[playerid][1]);
format(string,sizeof(string),"Gefaellt:");
PlayerTextDrawSetString(playerid,Anzeige[playerid][1],string);
PlayerTextDrawShow(playerid,Anzeige[playerid][3]);
PlayerTextDrawShow(playerid,Anzeige[playerid][2]);
format(string,sizeof(string),"%i/10",BaumWeg[playerid]);
PlayerTextDrawSetString(playerid,Anzeige[playerid][2],string);
SetPlayerMapIcon(playerid, 74,2424.6169,-654.6063,125.4632, 19, 0, MAPICON_LOCAL);
HolzStart[playerid] = 1;
return true;
}
if(strcmp(cmd,"stop",true) == 0)
{
SendClientMessage(playerid,WEISS,"Du hast den Job beendet!");
DisablePlayerCheckpoint(playerid);
JobMarker[playerid] = 0;
KillTimer(JobTimer[playerid]);
for(new i=0;i<4;i++)
{
PlayerTextDrawHide(playerid,Anzeige[playerid][i]);
}
SetPlayerSkin(playerid,Spieler[playerid][pSkin]);
EntfernungJobVariable(playerid);
UnFreeze(playerid);
imHolzfaller[playerid] = false;
if(Spieler[playerid][pJob] != 4)
{
SetPlayerVirtualWorld(playerid,0); SetPlayerInterior(playerid,0);
}
if(Spieler[playerid][pJob] == 4)
{
EntfernungObjekteHolz(playerid); DeleteVehicle(holzauto[playerid]);
}
}
return true;
}Wobei ich nicht weiß, ob die Abfrage so ist wie du sie willst, das musst du gegebenenfalls anpassen.
-
Mir wäre sonst nichts bekannt.
-
Daran ist ebenfalls nichts falsch. Funktioniert einwandfrei.
Hast du mal versuchst, das "Anzeige" umzubenennen? -
Also in der einen Zeile (wenn die anderen die Deklarationen sind) nichts. Ich kann es ohne Probleme kompilieren.
Da müsstest du mehr Code posten. -
ocmd:Leadererstellen(playerid,params[])
{
if(!isAdmin(playerid,5))return SendClientMessage(playerid,grün,"Du hast keine Berechtigung dazu!");
new pID,fID;
if(sscanf(params,"ui",pID,fID))return
SendClientMessage(playerid,dunkelblau,"INFO: /Leadererstellen [playerid][fraktid]");
if(fID>= sizeof(fInfo))return SendClientMessage(playerid,rot,"Die Fraktion existiert nicht!");
sInfo[pID][fraktion] = fID;
sInfo[pID][rang] = 5;
new string[145];
format(string,sizeof(string),"%s hat Sie zum Leader der Fraktion %s gemacht.",getPlayerName(playerid),fInfo[fID][f_name]);
SendClientMessage(pID,grün,string);
format(string,sizeof(string),"%s hat Sie zum Leader der Fraktion ernannt. Sie haben nun 5Wochen eine Fraktionssperre!",getPlayerName(playerid));
SendClientMessage(pID,grün,string);
SendClientMessage(pID,grün,"Sollten sie vorher die Fraktion verlassen bekommen sie eine Leaderverwarnung!");
SetPlayerColor(playerid,fInfo[fID][f_color]);
return 1;
} -
In SA-MP ist das relativ schwer zu bewerkstelligen. Du könntest zwar versuchen, das mit texturierten Objekten zu machen, die du bewegen lässt, aber ob das wirklich toll aussieht ist die andere Frage.
-
Füge das dem Befehl hinzu:
SetPlayerColor(playerid,fInfo[fID][f_color]); -
Ah, ja natürlich. Hätte ich auch gleich sehen können.
In der SetupPlayerCarNeon Funktion:
new vID = GetPlayerVehicleID(playerid);
zu:
new vID = PlayerCar[playerid][slot][CarId];Edit:
JoshJosh82: Ohja, kleines S. -
format(string,sizeof(string),"%s hat Sie zum Leader der Fraktion ernannt. Sie haben nun 5Wochen eine Fraktionssperre! Sollten sie vorher die Fraktionverlassen bekommen sie eine Leaderverwarnung!",getPlayerName(playerid),fInfo[fID][f_name]);
SendClientMessage(pID,grün,string);zu:
format(string,sizeof(string),"%s hat Sie zum Leader der Fraktion ernannt. Sie haben nun 5Wochen eine Fraktionssperre!",getPlayerName(playerid));
SendClientMessage(pID,grün,string);
SendClientMessage(pID,grün,"Sollten sie vorher die Fraktion verlassen bekommen sie eine Leaderverwarnung!");Außerdem sieht die Nachricht ja der andere (außer du gibst es dir selbst).
-
Dann entferne es wieder, und aktualisiere das Crashdetect-Plugin:
http://forum.sa-mp.com/showthread.php?t=262796Dann sollte der Fehler weg sein.