Das macht man mit sog. TextDraws...
Google nach einem TextDraw Editor und dann kannst du sowas machen ![]()
Das macht man mit sog. TextDraws...
Google nach einem TextDraw Editor und dann kannst du sowas machen ![]()
Aso, ja macht ja total Sinn, wenn sich jemand ein Haus kaufen kann, was ein LSPD-Interior hat ![]()
Natürlich geht es...er kann auch einfach z.B. bei seinen Haus Welten + 4000 machen und dann ist er ja fein raus, da sie sich nicht mehr überschneiden können.
Evtl solltest du Fraktions-Interiors nicht als Haus-Interiors verwenden...wieso auch ![]()
Klingt lustig ![]()
Wenn ihr wollt kann ich mit dem Skript dienen und es nach euren Wünschen anpassen ![]()
Ich gehe mal davon aus das ich die löschen muss wenn das Fahrzeug kaputt geht, aber zu welchem Public gehört das?
Evtl OnVehicleDeath ![]()
Evtl musste das öfters aufrufen (bzw preloaden) und resynchronisieren...wenn du mal außerhalb von dem Actor warst ![]()
Sprich in einem Callback aufrufen OnActorStreamIn ![]()
Dann hau mal das crashdetect Plugin rein und poste den Log ![]()
Dann printe dir das doch mal und schau..wieso es nicht aufgerufen wird und welchen Wert die clickedid hat..
Das ist schon so definiert...
Ehhh wirds nicht aufgerufen..oder was passiert nicht?
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(_:clickedid == INVALID_TEXT_DRAW)
{
/*
-- dein Hide Code hier --
*/
CancelSelectTextDraw(playerid);
}
}
//Edit:
//Zu Frage 2, entweder odern:
if(IsPlayerInRangeOfPoint(...) || IsPlayerInRangeOfPoint(...))
{
}
//Oder, coords in ein Array schreiben:
stock const Float:pos[][3] = {
{1415.0088,-1463.3322,106.6032},
{1417.3494,-1462.0212,106.6032},
{1419.8616,-1460.6096,106.6029}
};
//Und dann schleife:
for(new i; i<sizeof(pos); i++)
{
if(IsPlayerInRangeOfPoint(playerid,2.0,pos[i][0],pos[i][1],pos[i][2]))
{
//Hier dann dein Code
break;
}
}
Alles anzeigen
...zeig mal das Makro oder die Funktion...
Interessant wäre, was bei dir SCMTA ist. (also ob Makro oder Funktion und bitte mal posten).
BTW 0+x macht keinen Sinn...da das immer x ist ![]()
Da du mit 0 anfangen möchtest, schreibe es so:
Also um deinen Code zu korrigieren, wäre es so richtig:
new x = GetPVarInt(i, "Kontostand");
if(x <= 500000000)
{
Reichensteuer = 0;
SendClientMessage(i, Weis, "Keine Reichensteuer");
}
else if(500000000 <= x < 1000000000)
{
Reichensteuer = 100000;
SendClientMessage(i, Weis, "Reichensteuer(Klasse 1): .....$");
}
else if(1000000000 <= x < 1500000000)
{
Reichensteuer = 250000;
SendClientMessage(i, Weis, "Reichensteuer(Klasse 2): .....$");
}
else if(x >= 1500000000)
{
Reichensteuer = 500000;
SendClientMessage(i, Weis, "Reichensteuer(Klasse 3): .....$");
}
Alles anzeigen
Allerdings, könntest du es auch ganz kompakt schreiben, dann sähe es so aus:
new idx = getTax(GetPVarInt(i, "Kontostand")),string[128];
static const data[] = {0,100000,250000,500000};
format(string,sizeof(string),"Reichensteuer (Klasse - %d): %s$",idx,sMoney(data[idx]));
SendClientMessage(i,Weis,string);
Reichensteuer = data[idx];
//Die Funktionen:
/*
Stellt z.B. 100000 als 100.000 dar.
*/
stock sMoney(geld) //(c) by Kaliber
{
new str[24],i;valstr(str,geld),i=(geld > 0) ? strlen(str)-3 : strlen(str)-4;
for(; i>0; i-=3) strins(str,".",(geld > 0) ? i : i+1,24);
return str;
}
//Und um deine Klasse der Steuern zu bekommen:
stock getTax(x) return (x<=500000000)?0:((500000000<=x<1000000000)?1:((1000000000<=x<1500000000)?2:3));
Alles anzeigen
...verstehe zwar nicht wieso du meinem PNs und alles andere von mir ignorierst...aber okay.
Um z.B. die Koordinaten 30m vor deinem Auto zu bekommen, dafür sieht der Code so aus:
new Float:x,Float:y,Float:z,Float:a;
GetVehiclePos(veh,x,y,z),GetVehicleZAngle(veh,a);
const Float:distance = 30.0; //30m vor dem Auto
x += distance * floatsin(-a, degrees);
y += distance * floatcos(-a, degrees);
//Jetzt hast du die x,y,z Positionen für 30m vor dem Auto
Desweiteren eine Fahrzeug Hitbox, kannst du so machen, ich bin mal so freundlich und gebe dir direkt eine Funktion:
//Hier das Makro dafür:
#define IsObjectInArea(%0,%1,%2,%3,%4,%5) ((((%0) >= (%2)) && ((%0) <= (%4))) && (((%1) >= (%3)) && ((%1) <= (%5))))
stock getVehicle(obj) //(c) by Kaliber
{
new Float:x,Float:y,Float:z,Float:dis=9999.0,i=GetVehiclePoolSize()+2,Float:tmp,id,Float:p[6];
GetObjectPos(obj,x,y,z);
for(; --i!=-1;)
{
tmp = GetVehicleDistanceFromPoint(i,x,y,z);
if(!tmp) continue;
if(tmp < dis) dis=tmp,id=i;
}
GetVehiclePos(id,p[0],p[1],p[2]);
GetVehicleModelInfo(GetVehicleModel(id), VEHICLE_MODEL_INFO_SIZE, p[3],p[4],p[5]);
if(z > p[2]+(p[5]/2)) return -1;
return (IsObjectInArea(x,y,p[0]-(p[3]/2),p[1]-(p[4]/2),p[0]+(p[3]/2),p[1]+(p[4]/2))) ? id : -1;
}
//Die Funktion kannst du so z.B. Nutzen:
new x = getVehicle(obj);
if(x == -1) return print("Befindet sich in keinem Fahrzeug!");
printf("Befindet sich in Fahrzeug: %d",x);
//x hat dann hier den Wert von der vehicleid des Autos!
Alles anzeigen
mfg. ![]()
Ich verstehe nicht so ganz, was genau du versuchst.
Beschreibe doch mal was eine Qualle auf der Straße mit einem Auto zu suchen hat?! ![]()
Eine kleine Beschreibung wäre ganz interessant ![]()
Stell mal den Kompatibilitätsmodus auf Win 7 oder downgrade evtl deine gta_sa.exe wenn du das nicht schon getan hast ![]()
Wie stelle ich jetzt beim Kauf des 4 fest, dass es schon 3 Gibt?
Hmm, naja, eigentlich genügt hier eine temporäre Variable:
new tmp;
//Und dann da wo du dein Auto kaufst:
if(tmp >= sizeof(lspd)) return ....; //Hier wurde die maximale Anzahl an Autos schon gekauft!
lspd[tmp++] = CreateVehicle(...);
//Aber theoretisch kann man das auch mit einer Funktion machen, falls alte Autos gelöscht werden sollten:
//Da wo du das Auto kaufst:
new x = GetFreeSlost();
if(x == -1) return ....; //Hier wurde die maximale Anzahl an Autos schon gekauft!
lspd[x] = CreateVehicle(...);
//Die Funktion:
stock GetFreeSlot()
{
for(new i; i<sizeof(lspd); i++) if(!lspd[i]) return i;
return -1;
}
Alles anzeigen
Entweder nutzt du eine falsche mysql Plugin Version...oder das Plugin wird nicht geladen..
Poste evtl mal den ganzen Log...dann können wir dir besser helfen ![]()
hey ich hab mir jetzt mal zum scripten nen server geholt leider lädt der gamemode nicht.
Script[gamemodes/UltimateReallife.amx]: Run time error 19: "File or function is not found"
was soll ich tun?
Lad dir das nativechecker Plugin und schau, welche Plugins nicht geladen werden, bzw dir fehlen ![]()