Du deklarierst Variablen inherhalb der Brackets(innerhalb "{" und der "}"), die schon vorher deklariert worden sind (shadows a variable at a preceding level)
Benutze dafür andere Variable Namen.
Beiträge von BigETI
-
-
Tut es nicht unbedingt, da GetPlayerName aus einer Variable, die im Server schon eingebaut ist entnimmt und sie Instant ausgibt. (Wie alle möglichen eingebauten Funktionen, die meißtens mit "Get" anfangen.)
P.S.: Da deine "PlayerName" Variable vom Script aus leicht veränderbar ist, ist sie nicht so ganz sicher und dein Beispiel mit der Globalen Variable new PlayerName[MAX_PLAYER_NAME]; ist Falsch.
-
Es geht nichts über den
stock ReturnPlayerName(playerid)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
return pname;
} -
Danke
Sieht nicht schlecht aus.
Wäre vielleicht noch praktisch, wofür die Callbacks zu gebrauchen sind und wie man sie anwendet.
Aber sonst 9/10
Sorry, dass ich die Beschreibungen vergessen habe.
Ich werde Morgen alle Callbacks komplett beschreiben, und wie sie auch funktionieren.MfG
-
Hier will ich euch einen neuen Include vorstellen, wo ihr nun mehr Möglichkeiten besitzt, in Callbacks reinzuschreiben.
Was sind Callbacks?
Callbacks sind Funktionen die aufgerufen werden, wenn eine Aktion stattgefunden hatte.Was sind es denn nun für Callbacks die das Include mit sich bringt?
public OnPlayerEnteredVehicle(playerid, vehicleid, seatid)
public OnPlayerExitedVehicle(playerid, vehicleid)
public OnPlayerSkinChange(playerid, oldskin, newskin)
public OnPlayerHoldWeaponChange(playerid, oldslot, oldweapon, newslot, newweapon)
public OnPlayerWeaponStateChange(playerid, oldstate, newstate)
public OnPlayerWeaponDataChange(playerid, slot, oldweapon, newweapon)
public OnPlayerAmmoDataChange(playerid, slot, oldammo, newammo)
public OnPlayerMoneyChange(playerid, oldmoney, newmoney)
public OnPlayerHealthChange(playerid, Float:oldhealth, Float:newhealth)
public OnPlayerArmourChange(playerid, Float:oldarmour, Float:newarmour)
public OnPlayerAnimationIndexChange(playerid, oldindex, newindex)
public OnPlayerSpecialActionChange(playerid, oldsaction, newsaction)
public OnPlayerAnalogKeysChange(playerid, oldy, newy, oldx, newx)
public OnPlayerVehicleHealthChange(playerid, vehicleid, Float:oldhealth, Float:newhealth, bool:isissuer)
public OnPlayerVirtualWorldChange(playerid, oldworld, newworld)
//Darunter befinden sich frei entscheidbare Callbacks
public OnPVarDelete(playerid, varname[], oldtype)
public OnPVarCreate(playerid, varname[], type)
public OnPVarTypeChange(playerid, varname[], oldtype, newtype)
public OnPVarIntChange(playerid, varname[], oldint_value, newint_value)
public OnPVarStringChange(playerid, varname[], oldstring_value[], newstring_value[])
public OnPVarFloatChange(playerid, varname[], Float:oldfloat_value, Float:newfloat_value)Benutzung:
Füge einfach ncbs.inc in einen deiner Scripte (Zum Beispiel ein Filterscript). Benutze diesen Include nicht mehrmals. Benutze ncbs_forwads.inc in deinen anderen scripten, damit du ferngesteuerte Callbacks empfangen kannst.
Damit du diesen Feature benutzen kannst, musst du USE_IN_ALL_SCRIPTS definiert lassen.
ncbs_defines.inc gibt dir die Möglichkeit diesen Include zu konfigurieren.Beispiel wie man diese Includes benutzt:
ncbs.inc füge ich in meinem Filterscript ein:
#define FILTERSCRIPT
#include <ncbs>
public OnFilterScriptInit()
{
print("\n------------------------");
print(" Example Filterscript...");
print("------------------------\n");
return 1;
}ncbs_forwards.inc füge ich in meinem Gamemode ein:
#include <ncbs_forwards>
main()
{
print("\n--------------------");
print(" Example Gamemode...");
print("--------------------\n");
return 1;
}Beschreibungen:
public OnPlayerEnteredVehicle(playerid, vehicleid, seatid)
Wird aufgerufen, wenn ein Spieler in einen Fahrzeug eingestiegen ist.public OnPlayerExitedVehicle(playerid, vehicleid)
Wird aufgerufen, wenn der Spieler seinen Wagen verlassen hat.public OnPlayerSkinChange(playerid, oldskin, newskin)
Wird aufgerufen, wenn der Spieler sich den Skin geändert hat. (Mit SetPlayerSkin oder Mods).public OnPlayerHoldWeaponChange(playerid, oldslot, oldweapon, newslot, newweapon)
Wird aufgerufen, wenn der Spieler die Waffe auf der Hand wechselt.public OnPlayerWeaponStateChange(playerid, oldstate, newstate)
Wird aufgerufen, wenn der Spieler einen anderen Waffen Status abgibt (siehe http://wiki.sa-mp.com/wiki/Weapon_States).public OnPlayerWeaponDataChange(playerid, slot, oldweapon, newweapon)
Wird aufgerufen, wenn der Spieler irgendwelche Waffen spawnt/verliert (Spawnen mit GivePlayerWeapon oder Cheats).public OnPlayerAmmoDataChange(playerid, slot, oldammo, newammo)
Wird aufgerufen, wenn der Spieler Munition für das jeweilige Waffenslot spawnt/verliert (Spawnen mit GivePlayerWeapon oder Cheats).public OnPlayerMoneyChange(playerid, oldmoney, newmoney)
Wird aufgerufen, wenn der Spieler seinen Geldbetrag verändert hat (Mit GivePlayerMoney oder Cheats)public OnPlayerHealthChange(playerid, Float:oldhealth, Float:newhealth)
Wird aufgerufen, wenn der Spieler die Lebensanzeige sich verändert (Erhöhung durch Respawn, SetPlayerHealth oder Cheats).public OnPlayerArmourChange(playerid, Float:oldarmour, Float:newarmour)
Wird aufgerufen, wenn der Spieler die Schutzweste sich verändert (Erhöhung durch SetPlayerArmour oder Cheats).public OnPlayerAnimationIndexChange(playerid, oldindex, newindex)
Wird aufgerufen, wenn der Spieler die Animation ändert.public OnPlayerSpecialActionChange(playerid, oldsaction, newsaction)
Wird aufgerufen, wenn der Spieler seinen Special Action verändert (mit SetPlayerSpecialAction oder Mods/Cheats).public OnPlayerAnalogKeysChange(playerid, oldy, newy, oldx, newx)
Wird aufgerufen, wenn der Spieler die Hoch, Runter, Links und Rechts Taste gedrückt hat.public OnPlayerVehicleHealthChange(playerid, vehicleid, Float:oldhealth, Float:newhealth, bool:isissuer)
Wird aufgerufen, wenn der HP des Spielers Fahrzeugs sich verändert hat.public OnPlayerVirtualWorldChange(playerid, oldworld, newworld)
Wird aufgerufen, wenn der Spieler korrekt den Virtual World geändert hat (Da Virtual Worlds Serverbeständig sind, kann man mit Cheats nicht verändern)Freiwillige Callbacks:
public OnPVarDelete(playerid, varname[], oldtype)
Wird nur aufgerufen wenn ein PVar entfernt worden ist (siehe http://wiki.sa-mp.com/wiki/DeletePVar)public OnPVarCreate(playerid, varname[], type)
Wird nur aufgerufen, wenn ein PVar erstellt worden ist.public OnPVarTypeChange(playerid, varname[], oldtype, newtype)
Wird nur aufgerufen, wenn der PVarType sich verändert hat.public OnPVarIntChange(playerid, varname[], oldint_value, newint_value)
Wird nur aufgerufen, wenn ein SetPVarInt seinen eigenen Wert verändert hat.public OnPVarStringChange(playerid, varname[], oldstring_value[], newstring_value[])
Wird nur aufgerufen, wenn ein SetPVarString seinen eigenen Wert verändert hat.public OnPVarFloatChange(playerid, varname[], Float:oldfloat_value, Float:newfloat_value)
Wird nur aufgerufen, wenn ein SetPVarFloat seinen eigenen Wert verändert hat.Wie kann ich nun die Callbacks im Script wählen?:
Da das Script komplett in Englisch ist und somit International gelten sollte, werde ich einfach Übersetzen was im ncbs_defines.inc stehtCode
Alles anzeigen//WICHTIG: Definiere FILTERSCRIPT ganz oben auf deinem Script, um sicher zu gehen, dass du diesen Include für einen Filterscript gebrauchst, sonst nichts! //Kommentiere Definitionen die du nicht brauchst sonst entkommentiere sie. #define USE_IN_ALL_SCRIPTS //Wird benutzt um alle Callbacks im script fernzusteuern, anderseits werden die Callbacks nur in einem Script aufgerufen. #define USE_OPU_DELAY //Benutzt eine Verzögerung im OnPlayerUpdate um den Server nicht total zu killen (Sehr gut für Anti Cheats, dafür werden die Callbacks langsamer!) //#define USE_OPU_SECONDS //Callbacks verzögern >1 Sekunden anderseits sie verzögern >1 Millisekunden. (Entkommentiere USE_OPU_DELAY um es gebrauchbar zu machen!) [Optional] #define USE_PLAYER_CALLBACKS //Macht den Gebrauch von Erweiterten Spieler Callbacks. //#define USE_PVAR_CALLBACKS //Macht den Gebrauch von PVar Callbacks (Entkommentiere es, wenn du die PVar Callbacks benutzen willst.) [Optional] #define CB_OnPlayerEnteredVehicle //Macht den Gebrach von OnPlayerEnteredVehicle (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerExitedVehicle //Macht den Gebrach von OnPlayerExitedVehicle (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerSkinChange //Macht den Gebrach von OnPlayerSkinChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerHoldWeaponChange //Macht den Gebrach von OnPlayerHoldWeaponChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerWeaponStateChange //Macht den Gebrach von OnPlayerWeaponStateChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define USE_WEAPON_DATA_CALLBACKS //Macht den Gebrach von Waffen Daten Callbacks. #define CB_OnPlayerWeaponDataChange //Macht den Gebrach von OnPlayerWeaponDataChange (Entkommentiere USE_PLAYER_CALLBACKS und USE_WEAPON_DATA_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerAmmoDataChange //Macht den Gebrach von OnPlayerAmmoDataChange (Entkommentiere USE_PLAYER_CALLBACKS und USE_WEAPON_DATA_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerMoneyChange //Macht den Gebrach von OnPlayerMoneyChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerHealthChange //Macht den Gebrach von OnPlayerHealthChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerArmourChange //Macht den Gebrach von OnPlayerArmourChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerAnimationIndexChange //Macht den Gebrach von OnPlayerAnimationIndexChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerSpecialActionChange //Macht den Gebrach von OnPlayerSpecialActionChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerAnalogKeysChange //Macht den Gebrach von OnPlayerAnalogKeysChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerVehicleHealthChange //Macht den Gebrach von OnPlayerVehicleHealthChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPlayerVirtualWorldChange //Macht den Gebrach von OnPlayerVirtualWorldChange (Entkommentiere USE_PLAYER_CALLBACKS um es benutzbar zu machen!) #define CB_OnPVarDelete //Macht den Gebrach von OnPVarDelete (Entkommentiere USE_PVAR_CALLBACKS um es benutzbar zu machen!) #define CB_OnPVarCreate //Macht den Gebrach von OnPVarCreate (Entkommentiere USE_PVAR_CALLBACKS um es benutzbar zu machen!) #define CB_OnPVarTypeChange //Macht den Gebrach von OnPVarTypeChange (Entkommentiere USE_PVAR_CALLBACKS um es benutzbar zu machen!) #define CB_OnPVarIntChange //Macht den Gebrach von OnPVarIntChange (Entkommentiere USE_PVAR_CALLBACKS um es benutzbar zu machen!) #define CB_OnPVarStringChange //Macht den Gebrach von OnPVarStringChange (Entkommentiere USE_PVAR_CALLBACKS um es benutzbar zu machen!) #define CB_OnPVarFloatChange //Macht den Gebrach von OnPVarFloatChange (Entkommentiere USE_PVAR_CALLBACKS um es benutzbar zu machen!) //Setzbare Definitionen #define ADD_OPU_DELAY 0 //Du kannst die Verzögerung von OnPlayerUpdate verringer/vergrößern wenn du diese Definition veränderst (0 ist Standart [bedeuted >1 s oder ms Verzögerung]) (Wenn USE_OPU_SECONDS definiert ist, dann ist es in Sekunden anderseits in Millisekunden)
Bekannte Bugs:
- OnPlayerWeaponDataChange und OnPlayerAmmoDataChange werden nur gerufen wenn eine andere Aktion stattgefunden hat (SA:MP schuld)
- Sonst wurden keine weiteren Bugs gefunden..
Credits:
- ALS hooking wurde hinzugefügt (gemacht von Y_Less)
- Danke an wups, das er mir vorgeschlagen hat, wie man Callbacks mit funcidx wiedergibt
- Hat mir die Idee gegeben die OPU Verzögerung einzubauen (Idee von cessil)
- Das SA:MP development Team
- Ich selber..
Updates:
- Version 1.4: OnPlayerChangeMoney, OnPlayerEnteredVehicle, OnPlayerExitedVehicle, OnPlayerAnalogKeysChange und OnPlayerVehicleHealthChange wurden hinzugefügt.
Die callbacks in anderen Scripte aufrufbar.
new_callbacks.inc wurde umgeändert zu ncbs.inc
ncbs_forwards.inc wurde hinzugefügt (Wird benutzt um ferngesteuerte Callbacks zu empfangen.)
ncbs_defines.inc wurde hinzugefügt (Wird benutzt um die Definitionen zu verändern.)
Einige wichtige/unwichtige Fehler wurden behoben.. - Version 1.3: OPU delay Idee wurde hinzugefügt um einen epischen Server Crash zu vermeiden (Idee von cessil)
Jede einzelner Callback ist nun wählbar!
Geschwindigkeit wurde verbessert.
Bug Fixes.. - Version 1.2: Benutzung der ALS hooking Methode (von Y_Less) und benutzung von funcidx, um die Callbacks gescheidt wiederzugeben (Idee von wups)
OnPVar Callbacks sind nun freiwillig aktivierbar (Unkommentiere die USE_PVAR_CALLBACKS Definition innerhalb der Include damit man die OnPVar Callbacks benutzen kann). - Version 1.1: OnPlayerSpecialActionChange Callback wurde hinzugefügt.
- Version 1: Erster Release!
Wo kann ich mir das runterladen?
Download Paket in Solidfiles
oder
Pastebin Download (ncbs.inc)
Pastebin Download (ncbs_forwards.inc)
Pastebin Download (ncbs_defines.inc)Bitte meldet hier irgendwelche Bugs!
MfG: BigETI
-
Vergleiche bitte die Definitionen von DIALOG_ADMIN_MENU und DIALOG_ADMIN_GMN.
(Höchstwarscheinlich haben beide den selben Wert! Was dazu führen würde, dass sie sich kreuzen könnten, deshalb auch diese Error Nachricht.)
Und versuche nie "else if" in solchen Fällen zu benutzen, sonst da der Compiler dir das nicht benachrichtigt und IG zu Falschen oder Fehlenden Ergebniss im Dialog führen kann. -
Die Anzeige aktualisiert sich alle 0,3 Sekunden wie hier zu sehen ist:
SetTimer("GostergeYenile",300,1);
Damit es alle 2 Sekunden aktualisiert muss es so aussehen:
SetTimer("GostergeYenile", 2000, true);Um die Anzeige nicht so springen zu lassen (bedanken wir uns an den SA:MP Sync, das auch nicht gerade das Beste ist) musst du eine "Smooth" Berechnung machen, die mathematisch ungefähr so aussieht:
-
Hmm, kann man nicht mit Plugins einfach eine Sounddatei für ein Spieler abspielen, auch wenn der Spieler kein Soundclient hat...? Wenn es geht, dann kannst du einfach Tondateien selber machen in verschiedenen Tiefen, und sie in ein Ordnerspeichern, und sie dann abzuspielen, wäre doch richtig gut.
Uhhm ich kann leider nicht jeden auffordern, sich den Audio Plugin von Incognito für den Clienten runterzuladen. Sonst weiß ich auch nicht, wie man sonst Sounds streamen sollte (außer SA:MP Sounds) -
Wow, richtig perfekt.
"Sound Player FS" war eh nur unnütz, benutze ich nichtmal selber, das war eins meiner ersten FilterScripts.
Aber das mit den Listen und auch noch bei den zahlen alle Soundnamen hinzuschreiben, das müsste wohl lange gedauert haben.
Bewertung 10/10
Und auf den Music Composer Tool bin ich schonmal richtig gespannt.
Und für dich habe ich auch schon eine Idee bzw. für den "Music Composer", man sollte, wenn man ein Sound auswählt, auch angeben sollen, wieviel abstand zwischen dem vorherigen Ton und dem jetzt ausgewählten ton sein soll (in milisekunden). Also in anderen Worten, nach wievielen milisekunden der ausgewählte ton kommen soll.
So kann man nähmlich eigene Musik und sowohl auch remakes von anderen Liedern machen, das würde auch sehr spaß machen
Danke
Erstmal habe ich mit strg+c und strg+v aus dem SA:MP Wiki in einem Array reinkopiert.(ca. 40 min Arbeit für den FS lol)
Aber dafür wird es in V2 auch möglich sein im Music Composer 1/2, 1/4, 1/8 und sogar erweiterte Zeitangaben (millisekunden) einzufügen. Leider ist es in SA:MP nicht möglich Tontiefen zu definieren.
Lieder werden in der Zukunft als eine spezielle Datei (z.B.: .musikz) gespeichert und/oder direkt kompilierbar zu einem fertigen FS über einen Tastendruck.
Die .musikz kann man In-Game nur mit einem Passwort editieren, abspielen und/oder löschen. (Ohne irgendein Account system)
Außer dem Music Composer werden Sounds und Musik dynamisch sortiert und die Start und Stop Regelungen wurden auch schon eingebaut (was entspricht, dass man Sounds stoppen kann, indem man nochmal draufklickt). Plus noch für Server Betreiber, die direkte PlayerPlaySound Scriptlinien benötigen, werden in der Lage sein, solche Informationen in die scriptfiles Ordner in eine spezielle .txt Datei zu speichern. -
Danke
Wer weiß vllt füge ich noch einen "Music Composer Tool" damit man Musik ähnliches mit den SA:MP Sounds machen kann und ganz sicher ein Tool, damit man direkte Script Zeilen (PlayerPlaySound) vom Dialog aus Instant in eine Text Datei im "scriptfiles" Ordner bekommt.
-
Respekt,
geiles Teil kann ich echt gut gebrauchen
Danke.
Bitte und dankeschön. -
SA:MP Soundz V1 gemacht von BigETI
Willkommen im SA:MP Soundz V1 Thema.
Hier will ich euch einen kleinen Filterscript releasen um alle SA:MP Sounds zu hören.Wie bin ich auf diese Idee gekommen?
Da ich im Forum schon einen Filterscript gesehen habe, der schon released worden ist, aber die Sounds überm anklicken garnicht abspielbar sind,Zitat von FoxHound[...]Ich wollte es eigentlich mit Listen Dialog machen aber pawno hat wiedermal gepiept XD
[...]Die Sound-ID müsst ihr euch merken und es in den Input-Dialog schreiben, damit es abgespielt werden kann.
Wie gesagt; ich wollte es mit ListenDialog machen aber es gaben ZU viele errors mit pawno.[...]
deshalb habe ich PAWNO einfach aufgemacht und den Filterscript von null auf neu gescriptet. (Ich hatte eh lw also daher :))
Naja daraus kam das hier:Und die Sounds sind nun sogar auf dem Dialog sofort abspielbar
Beinhaltet:
- Ideen von FoxHound's SoPlay Filterscript: [ FILTERSCRIPT ] Sound Player (SoPla)
- Alle SA:MP Sounds.
- Mit dem Befehl "/soundplayer" kommt ihr in den SA:MP Soundz V1 Dialog
- Sounds beim anklicken sofort abspielbar.
- Beim nächsten Release mit Suchfunktion für ID und Titel Name.
- Credits
Bugs:
- Warnung! Auf einigen der gecrackten Versionen von GTA San Andreas kann man nicht alle Sounds hören!
- Keine weiteren gefunden
Fehlendes:
- Die Suchfunktion fehlt, weil sie am Ende doch verbuggt war, aber deshalb werde ich es fixen und SA:MP Soundz V2 mit Suchfunktion in einigen Tagen releasen. (Wenn ich natürlich Zeit habe :))
Es wird auf jeden Fall die Suchfunktion für Sound ID's sowie Namen der Sounds existieren. - Ideen von euch..
Download SA:MP Soundz Deutsche Version 1 (Pastebin)
Und für die nicht deutschen Kollegen:
Download SA:MP Soundz English Version 1 (Pastebin)Mfg: BigETI
-
Erst musst du MAX_NACHRICHTEN als eine Konstante definieren
z.B.:
#define MAX_NACHRICHTEN 100
oder
new const MAX_NACHRICHTEN = 100;
wie auch immer..Danach kannst du deinen enum schreiben:
enum nachrichtenenum
{
idm, //Ich meine ID und Inhalt reicht auch komplett da du die informationen über GetPlayerName oder andersherum bekommen kannst aber musst du selber wissen
Empfängerm[MAX_PLAYER_NAME], //Ich weiß nicht, warum du 2 separate Variablen brauchst, um den Empfänger und Absender zu deklarieren.
Absenderm[MAX_PLAYER_NAME],
Inhaltm[128],
listitemm //Was? Ich meine, das kannst du auch komplett weglassen, da beim [MAX_NACHRICHTEN] index der listitem schon vordefiniert sein wird
}Danach sollteste du einen array deklarieren, die wie folgt aussehen sollte:
new NachArray[MAX_PLAYERS][MAX_NACHRICHTEN][nachrichtenenum]; -
Hallo Leute,
kennt vllt einer von euch eine Liste voller SQLite querys (Nachrichten, die man zu einer .db datei schickt) die mir ermöglichen Tabellen, Informationen (Funktionen die man in eine Tabelle speichern kann) usw. usw weil google auch grad nichts gegeben hat (oder nur Beispiele für Custom Versionen der SQLite Serie), weil ich sonst meinen SQLite Include nicht fertig kriegen kann^^MfG: BigETI
-
du musst mit der differenz der beiden zahlen irgendeine Zahl generieren und mit der Basiszahl (min Wert) addieren um eine Zahl zwischen den beiden Zahlen zu kriegen sonst kannst du laut deiner Funktion höhere Zahlen als der max Wert kriegen
Naja meine Funktion sollte den lieben scripting Anfängern nützlich sein, wenn die ka von Mathe haben xDEdit:
Ich habe gemerkt, dass die letzte Zahl nie generiert wird, deshalb auch:
stock RandomEx(val1, val2)
{
new value = val1;
if(val1 < val2) value = random((val2-val1)+1)+val1;
else if(val1 > val2) value = random((val1-val2)+1)+val2;
return value;
} -
"cmdtext" ist nicht im body definiert. Benutze bitte Callbacks (sie sind als "public" zu sehen), um auf die Variablen zuzugreifen.
-
Schon richtig gut und nützlich, aber wäre das hier nicht sinnvoller?
stock randomEx(min,max) return (random(max)+min); }z.B. bei:
"randomEx(5,10)" muss eine zahl zwischen 4 und 10 rauskommen (4 weil die 5 zählt mit).
Wenn "random" z.B. 2 zürückgibt, wird 'min' (in diesem fall '5') addiert und es kommt '7' raus.Ja für den schnelleren Gebrauch, aber wenn du laut deiner Funktion dass hier machst:
randomEx(100,2);
Ergibt das einen Fehler, da man im random keine negativen Zahlen benutzen kann, während bei meiner Funktion
RandomEx(100,2);
kommt irgendeine X-beliebige Zahl zwischen 2 und 100 raus.Edit: Wenn schon mit "min" und "max", dann bitte:
stock randomEx(min, max) return (random((max-min)+1)+min); -
Hast schon recht, ich füg' es jetzt auch in die Liste ein. Und willkommen auf Bready, BigETI
Danke FoxHound^^ -
Funktion: RandomEx(val1, val2);
Wiedergibt/Erklärung:
Eine zufällig generierte Zahl zwischen der ersten und der zweiten Zahl. Es macht keinen Unterschied wenn die erste Zahl größer oder kleiner ist als die zweite Zahl.Beispiel:
printf("Die Zahl ist %d.", RandomEx(10, 200));Code:
stock RandomEx(val1, val2)
{
new value = val1;
if(val1 < val2) value = random((val2-val1)+1)+val1;
else if(val1 > val2) value = random((val1-val2)+1)+val2;
return value;
}====================
Funktion: GivePVarInt(playerid, varname[], int_value);
Wiedergibt/Erklärung:
Wiedergibt garnichts oder Null! Es hat die selbe Funktion als würde man an einer Globalen Variable ++ anwenden, nur halt bei einer PVar.Beispiel:
GivePVarInt(playerid, "Kills", 1);Code:
stock GivePVarInt(playerid, varname[], int_value) SetPVarInt(playerid, varname, GetPVarInt(playerid, varname)+int_value);====================
Funktion: IsPlayerSneakingPlayer(playerid, toplayerid);
Wiedergibt/Erklärung:
Wiedergibt "true", wenn der Spieler ungefähr in die selbe Richtung guckt wie der andere Spieler (benutzt in "Back Shot" Scripte), sonst "false" (boolean)Beispiel:
if(IsPlayerSneakingPlayer(killerid, playerid)) printf(%s wurde von %s von hinten gekillt, playername, killername);Code:
stock IsPlayerSneakingPlayer(playerid, toplayerid)
{
new Float:p1Rot, Float:p2Rot, Float:result1, Float:result2, Float:finalresult;
GetPlayerFacingAngle(playerid, p1Rot);
GetPlayerFacingAngle(toplayerid, p2Rot);
result1 = p1Rot-p2Rot;
if(result1 < 0) result1 = -(result1);
result2 = (360.0+p1Rot)-p2Rot;
if(result2 < 0) result2 = -(result2);
if(result1 <= result2) finalresult = result1;
else if(result1 > result2) finalresult = result2;
if(finalresult > 90) return false;
return true;
}====================
Funktion: SpawnPlayerEx(playerid);
Wiedergibt/Erklärung:
Wiedergibt garnichts oder Null! Wird benutzt um einen bugfreien Respawn zu machen, falls der Spieler noch in einem Fahrzeug sitzt.Beispiel:
SpawnPlayerEx(playerid);Code:
stock SpawnPlayerEx(playerid)
{
if(IsPlayerInAnyVehicle(playerid)) SetPlayerPos(playerid, 0.0, 0.0, 0.0);
SpawnPlayer(playerid);
}====================
Funktion: GetPlayerDistanceToPoint(playerid, Float:X, Float:Y, Float:Z, &Float:Distance);
Wiedergibt/Erklärung:
Nur die Variable "Distance" wiedergibt die Entfernung. Meißtens wird diese Funktion in Speedometer oder GPS Systemen verwendet um die Entfernung zwischen zwei 3D Punkten zu berechnen. (Man kann auch Funktionen wie GetPlayerDistanceToPlayer, GetPlayerDistanceToVehicle sogar GetPlayerDistanceObject herstellen usw. usw..)Beispiel:
new Float:mydistance;
GetPlayerDistanceToPoint(playerid, 20.3043, 400.5238, 10.2588, mydistance)
printf("Die Entfernung liegt genau %.4f meter.", mydistance);Code:
stock GetPlayerDistanceToPoint(playerid, Float:X, Float:Y, Float:Z, &Float:Distance)
{
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid, pX, pY, pZ);
Distance = floatsqroot((X-pX)*(X-pX)+(Y-pY)*(Y-pY)+(Z-pZ)*(Z-pZ));
}====================
Falls ihr noch mehr nützliche Codes braucht, PM't mich einfach^^
MfG: BigETI
-
Da hier die Anti-C-Bug scripte total sch**** (sorry) sind, will ich ein Anti-C-Bug System aus meinem eigenen Admin/Anti Cheat&Junk System vorstellen.
(Übersetzt auf Deutsch)
BigETI's Anti-C-Bug System De