Beiträge von Kaliber
-
-
Ich finde da einfach keinen Fehler, hier wird immer die erste ID geprinted die es gibt, dennoch ist der Spieler an einer anderen Firmenid.
Machs doch mal so und schau dir die prints an:stock GetBuroIDInRange(playerid,Float:Range) {
for(new i; i < MAX_FIRMS; i++) {
if(FirmInfo[i][inuse] != true) continue;
printf("%d | %.02f , %.02f , %.02f | %d",i,FirmInfo[i][burox],FirmInfo[i][buroy],FirmInfo[i][buroz],MAX_FIRMS);
if(IsPlayerInRangeOfPoint(playerid,Range,FirmInfo[i][burox],FirmInfo[i][buroy],FirmInfo[i][buroz])) return i;
}
return -1;
}//Edit: Lass das mit dem Wort stock...es ist eine Funktion, stock hat eine andere Funktion

mfg.

-
Ich will kein großes Script..
Nur ein Script wo man sich waffen geben kann und sich Fahrzeuge spawnen kann, und paar Kleinigkeiten.
Merk dir, genau sowas in den Startpost zu schreiben, der ja dazu dienen soll zu informieren.mfg.

-
Bekomme leider in den folgenden Zeilen noch Tag Mismatches:
Ups
Ja, schreibs so:
stock ConvertToEuler(Float: qw, Float: qx, Float:qy, Float:qz, &Float:heading, &Float:attitude, &Float:bank) {
new Float: sqw = qw*qw,Float: sqx = qx*qx,Float: sqy = qy*qy,Float: sqz = qz*qz,Float: unit = sqx + sqy + sqz + sqw,Float: test = qx*qy + qz*qw;
if (test > 0.499*unit) return heading = 2*atan2(qx,qw),attitude = 3.141592653/2,bank = 0,1;
if (test < -0.499*unit) return heading = -2*atan2(qx,qw),attitude = -3.141592653/2,bank = 0,1;
return heading = atan2(2*qy*qw - 2*qx*qz, sqx - sqy - sqz + sqw),attitude = asin(2*test/unit),bank = atan2(2*qx*qw - 2*qy*qz, -sqx + sqy - sqz + sqw),1;
}mfg.

-
Hier, damit sollte es klappen:
stock ConvertToEuler(Float: qw, Float: qx, Float:qy, Float:qz, &Float:heading, &Float:attitude, &Float:bank) {
new Float: sqw = qw*qw,Float: sqx = qx*qx,Float: sqy = qy*qy,Float: sqz = qz*qz,Float: unit = sqx + sqy + sqz + sqw,Float: test = qx*qy + qz*qw;
if (test > 0.499*unit) return heading = 2*atan2(qx,qw),attitude = 3.141592653/2,bank = 0;
if (test < -0.499*unit) return heading = -2*atan2(qx,qw),attitude = -3.141592653/2,bank = 0;
return heading = atan2(2*qy*qw - 2*qx*qz, sqx - sqy - sqz + sqw),attitude = asin(2*test/unit),bank = atan2(2*qx*qw - 2*qy*qz, -sqx + sqy - sqz + sqw);
}
stock GetVehicleRotation(vehicleid,&Float:heading, &Float:attitude, &Float:bank) {
new Float:quat_w,Float:quat_x,Float:quat_y,Float:quat_z;
GetVehicleRotationQuat(vehicleid,quat_w,quat_x,quat_y,quat_z);
ConvertToEuler(quat_w,quat_x,quat_z,quat_y, heading, attitude, bank);
return bank = -1*bank,1;
}mfg.

-
C:\Users\Timo\Desktop\Script\filterscripts\server.pwn(40) : error 035: argument type mismatch (argument 1)
Du musst auch die Variable so deklarieren wie ich...sie braucht einen Array
-
ich hab ein Dcmd Befehl gexriptet und wenn ich den in meinem Server eingeb mit dem richtigwen zeug passiert nix
Da kann auch nichts passieren, da u einen Integer Wert zurückgibt...
Zudem arbeitest du hier auch völlig falsch...dir fehlen noch so einige Grundkenntnisse...Schreib es so, dann macht es mehr Sinn:
dcmd_textdraw(playerid,params[])
{
new buffer[32];
if(sscanf(params,"s[32]s[32]", buffer, Name)) return SendClientMessage(playerid,0xAFAFAFAA,"Benutze: /textdraw [Aufrufen/Bearbeiten] [Name des TextDraws]");
if(!strcmp(buffer,"Aufrufen",true)) {
if(fexist(Name)) SendClientMessage(playerid, black, "Benütze zum schliesen des Testdraws /clostextdraw");
else SendClientMessage(playerid,black,"Diese Datei existiert nicht!");
return 1;
} else if(!strcmp(buffer,"Bearbeiten",true)) {
SendClientMessage(playerid,black,"Hier kannst du nun was bearbeiten!");
return 1;
}
return SendClientMessage(playerid,black,"Bitte geben Aufrufen oder Bearbeiten ein!");
}mfg.

-
Ich wollte Fragen, wie kann man die x,y,z Koordinate auslesen lassen?
So...:
printf("X: %f | Y: %f | Z: %f",TelefonZellen[id][telez_x],TelefonZellen[id][telez_y],TelefonZellen[id][telez_z]);mfg.

-
Was passiert denn, wenn man einen Stuntbonus bekommt? Da bekommt man ja auch Geld vom Client....
Das hast du gut erkannt...und wenn man sich 1+1 zusammen rechnet, erkennt man, dass es mit dieser Variante nicht geht.Man müsste halt ein eigenes Stunt System schreiben, genauso wie man eigene Casino Systeme o.ä. schreiben müsste.
Wusste nicht genau wie ich diesen Block nenen soll sind ja keine Variablen sind mehrere verschiedene Sachen, das schaut sehr kompliziert aus und ist definitiv nix für Neulinge Aber wie gesagt sieht gut aus
Das erste ist ein forward...public Funktionen oder Funktionen mit einem Header-Typ muss/kann man forwarden.
Das sind eigentlich basics.
Und dann halt die Variable Geld.
Und eine neue native Funktion für den Hook.
und das @ vor dem MonyTimer steht im Prinzip nur für forward, also auch eigentlich basics.
...also sooo kompliziert ist das nun nicht
mfg.

-
Wie genau funktioniert nochmal strcat?
So:
new string[32] = "Hallo"; //Jetzt würde im String nur Hallo stehen.
strcat(string, " Kaliber"); //Jetzt steht in string: Hallo Kaliber
strcat(string,"!"); //Jetzt steht in string: Hallo Kaliber!mfg.

-
Was kann cih da machen? Hab gestern sscanf schon upgedatet...
Ach echt?
Eigentlich würde dann die Include sscanf2.inc heißen...nutzt du auch das Plugin?

mfg.

-
Schau mal genau auf den Fehler, der kommt nicht aus deinem Gamemode, sondern aus der sscanf.inc

mfg.

-
-
Das man Socket Verbindungen aufbauen kann, zu jemand anderem und man dann an einem Script schreiben kann...halt so Live Scripting, wurde ja schon oft besprochen.
Dann vielleicht noch, was cool wäre die Farbe von bestimmten Wörtern ändern, z.B. das state blau angezeigt wird etc..
Hole dir doch Inspiration von Haukes Editor, da wurde das alles schon mal besprochen

mfg.

-
Was Winston_Churchill hier meint ist das du einfach die funktionen hookst also GivePlayerMoney, GetPlayerMoney und eventuell
ResetPlayerMoney und über GetPlayerMoney einfach abfrägst ob das geld der variabel entspricht.
Was du zusätzlich dazu machen musst ist dem spieler im paintspray und in der tunning garage den wert der serverseitigen variabel zu setzen
entweder du passt den wert einfach an unter OnEnterExitModShop oder direkt bei OnVehicleMod und bei den paint'n sprays da kannst du zonen erstellen über das Streamer Plugin
Sacht mal...ich weiß doch was er meint
Man kann einfach darunter folgende abfrage machen:
if(geld[playerid] < GetPlayerMoney(playerid)) geld[playerid] = GetPlayerMoney(playerid);
Dann hat man auch die Heal-Automaten abgedeckt...etc

...aber lest euch doch mal meine Antwort schon von Beavis durch...da verweise ich doch schon auf meine Antwort darauf...

Das war Absicht

mfg...
-
Er meint das anders.
Du hast bspw. 50.000$.
Nun gehst Du in eine Tuningwerkstatt und kaufst Gegenstände für bspw. 15.000$.
Serverside hat er allerdings noch 50.000$, was bedeuten würde, dass er die gerade ausgegebenen 15.000$ ercheaten könnte, da er ja dann wieder genau bei 50.000$ wäre und somit "offiziell" kein Geld gecheatet hat.
Ich hab schon verstanden was er meint...genau das meine ich auch
-
Nur würde ich sogar in diesem Fall ohne Timer arbeiten
und auf eine andere Variante zurückgreifen die viel besser für den Server wäre.
...und zwar?
Rede dich ruhig aus 
ein Antimoneyhack wie jedes andere.
Nicht wirklich...sehe sonst viele andere komische Sachen
-
Es gibt ne Schwachstelle
Les dazu meinen Post:[ SCRIPTING ] Anti Moneyhack
Ich glaub er kommt mit dem hooking nicht so klar
aso
2. Das ganze mit einem Timer zu machen ist ein wenig besser für den Server
Hmm..wie gesagt es geht ja jetzt nicht um die Timer, sondern um das Prinzip dahinter
mfg.

-
Dazu sind deine Variablennamen sehr kompliziert.
Es gibt genau 1ne Variable...und die heißt geld
Kompliziert

Finde es total kompliziert geschrieben, das ist definitiv nichts für neulinge.
Naja, ich habe es versucht einfach zu erklären, natürlich ist der Code etwas anspruchsvoll, allerdings sollten die Erklärungen einleuchtend sein...Das hätte man leichterer machen könnne.
Na dann, zeig doch mal
mfg.

-
Mach das ganze doch über OnPlayerUpdate
Naja...wozu?
Warum sollte das bis zu ~10000x in der Sekunde geprüft werden?
das du alle spieler mit einem aufruf der funktion via for-schleife durchgehst.
Das könnte man auch tun...macht jetzt nicht soo einen großen Unterschied.Aber die Möglichkeit bleibt ja offen es zu ändern

mfg.
