Opa hatte mit seiner Antwort Recht... schon mal was von Nachdenken gehört ?
Beiträge von BlackFoX
-
-
Was soll das Board dafür können das so viele Nutzer selbst zu blöd zum Lesen sind & einfach nur Faul das es aus allen Ecken stinkt,
bei machen fehlt sogar das Gehirn zu mehr als 70% -
Ich denke nicht das es die Meter sind , das stellt die Entfernung in einem Kreis / Radius / Ball außerhalb eines Balls da,
Radius = Umkreis sprich an jeder Seite 20.0 Koordinaten Einheiten Abstand befindet man sich unter dem Abstand so stimmt die Distanz -
- Gehört das hier rein http://forum.sa-mp.de/wbb/werb…ng-angebote-und-anfragen/
- Wenn es nicht geht brauchst du mindestens 10 Beiträge wenn du die nicht hast musst wohl etwas Geduld haben
- Sind die Informationen ja ziemlich knapp
-
Schau dir deine Zugriffe mal an...
new Float:poz[][] = {
{x,y,z}
};
du greifst von Zufall ,der richtig ist, auf das richtige Feld zu ABER du greifst auf Felder zu die nicht existieren, es gibt 3 Felder ( 0,1,2 ) auf die du zugreifen kannst,
dein Zugriff weitet sich hier auf 5 aus ... -
Stichwort Array , eine Tabelle mit mehreren Werten oder auch Dimensionen
new poz[]/*Dimension 1*/[]/*Dimension 2*/ =
// Dimension 1
{/*Feld für Dimension 2*/},
{/*weiteres Feld für Dim 2*/}
}; // Ende Dimension 1poz[0] /* Feld 0 in Dim1 */[1] /* Feld 1 in Dimension 2 das in Dimension 1 Feld 0 existiert */
-
strval(inputtext)
Du musst den Wert erst umwandeln
if(dialogid == bankabhebendialog)
{
if(response == 0)
{
SendClientMessage(playerid,rot,"Bank-Menü geschlossen");
}
if(response == 1)
{
if(strval(inputtext) <= PlayerInfo[playerid][pBank])//5052
{
PlayerInfo[playerid][pBank] -= strval(inputtext);//5054
GivePlayerMoney(playerid,strval(inputtext)); //5055 -
Ich habe den kompletten Kern des Streamer nochmal neu geschrieben , vieles Optimiert & zum Teil auch besser gemacht, der
Kern ist nun kürzer & optimiert so sollte der Code selber auch schneller laufen, alle Funktionen wurden natürlich auch neu geschrieben,
ich habe es möglichst so zusammengestellt das alles vor Augen des Spielers passiert sprich so das sich die Funktionen gegenüber
den Originalen nicht unterscheiden mit dem Unterschied das natürlich mehr Objekte unterstützt werden. -
Danke für das bisherige Feedback, hab die Rückgabe der Position sowohl auch Rotation hinzugefügt.
Opachen ich hab bei dir nicht ab geguckt bin selber drauf gekommen, hab nicht gewusst das du deinen mit selber Methode laufen lässt.
-
new Float:poz[][] = {
{...}, // Koordinaten 0
{...} // Koordinaten 1
};unter OnPlayerSpawn
new rnd = random(sizeof poz);
SetPlayerPos(playerid,poz[rnd][0],poz[rnd][1],poz[rnd][2]); -
Hallo Leute,
ich habe meinen Streamer nun komplett neu aufgebaut, sprich nichts basiert mehr auf der 3.5 , der Kern des ganze liegt nun in einem Filterscript,
die Verknüpfungen in einer inc Datei, ich habe diesen Schritt vorgenommen um das ganze etwas zu erleichtern zudem müsste ihr nicht in jedes Skript extra
Ressourcen beziehen also ein Kern wo alles ausgeht & euer Skript braucht nur die Verknüpfungen zu den Funktionen, zudem sollte der Streamer mit neuer Basis
viel besser laufen & auch angenehmer.Installation
- Archiv herunterladen
- Aus dem Archiv ,,bfx_stream.amx´´ in Filterscripts packen zudem in die Server.cfg eintragen
- ,,bfx_oStream.inc´´ in den Include Ordner verschieben bzw. kopieren was auch immer Hauptsache die inc ist drin.
- Nehmt euer Skript & bezieht bfx_oStream ein.
Nutzung
b_CreateObject(modelid,Float:bx,Float:by,Float:bz,Float:brx,Float:bry,Float:brz,interiorid = 0,virtualwid = 0,stream_dis = STREAMER_DISTANCE,forplayerid = -1,draw_distance);
- Model ID - Modell des Objekts
- X,Y,Z - Koordinaten/Standpunkt des Objekts
- RX,RY,RZ - Rotation des Objekts
- Innenraum - Raum in dem das Objekt existieren soll ( Angabe des Parameters ab hier nicht erforderlich )
- Virtuelle Welt - Zwischenwelt für das Objekt ( Optional )
- Spezielle Distanz bis zum Laden des Objekts
- Für speziellen Spieler.
- Distanz bis Objekt angezeigt wird ( Seitens Sa-mp )
b_DestroyObject(id);- Objekt zerstören
b_SetObjectPos(id,Float:posx,Float:posy,Float:posz);- Objekt Position festlegen ( X, Y, Z )
b_SetObjectRot(id,Float:posrx,Float:posry,Float:posrz);- Objekt Rotation festlegen ( RX, RY, RZ )
b_MoveObject(id,Float:mx,Float:my,Float:mz,Float:speed);- Objekt bewegen mit normalen Angaben
b_StopObject(id);- Objekt anhalten
b_SetAreaLimit(limit);- Limit der Objekte für die Umgebung festlegen ( Maximal 251 , Minimal 0 [ Limit durch Streamer gesichert ] )
b_GetPlayerPos(id,&Float:x,&Float:y,&Float:z);- Objekt Position Speichern sprich wiedergeben ( Live , wenn das Objekt gerade bewegt wird so wird die Position die das Objekt derzeit hat auch zurückgegeben )
b_GetPlayerRot(id,&Float:rx,&Float:ry,&Float:rz);- Objekt Rotation Speichern sprich wiedergeben ( Live , wenn das Objekt gerade bewegt wird so wird die Position die das Objekt derzeit hat auch zurückgegeben )
b_GetObjectCount();- Anzahl der geladenen Objekte ermitteln
b_SetTotalLimit(stream_limit)
- Setzt das Maximale Limit an Objekten
b_SetObjectToPlayer(id,playerid)- Setzt das Objekt für den Spieler bzw für einen bestimmten Spieler
So ihr müsst nichts extra ins Skript tun nur die Verknüpfungen zu den Funktionen die erhaltet ihr beim einbeziehen von ,,bfx_oStream.inc´´//é : Test Map hinzugefügt
Vergessen folgendes zu erwähnen :
Es gibt 2 neue Callbacks
OnBFXObjectStreamIn(streamobjectid,forplayerid,playerObjectCount,MaxmimalObjects)
OnBFXObjectStreamOut(streamobjectid,forplayerid,playerObjectCount,MaxmimalObjects)__________________________________________________________________________________________________________________
+ Funktion hinzugefügt
b_DestroyAllObjects();- zerstört alle Objekte im Streamer und löscht sie endgültig
Kleine Änderung, der Stream Radius wurde von 135.0 auf 200.0 gesetzt , so sollte Auslastung des Streamer bei optimalen 83% liegen,
sprich es wird mehr von der Umgebung sichtbar vor allem schneller sichtbar.+ Funktion hinzugefügt
b_LoadMap(Mapname[],Float:Streamer_Distance_ = STREAMER_DISTANCE,Float:Draw_Distance_ = DRAW_DIST);- Lädt MTA Deathmatch Map's ab Version 1.0.0 und älter...
- Funktion verbessert, lädt nun auch Interior/Virtual World angaben aus der Map
- mehrere Optionen hinzugefügt , müssen aber nicht ausgefüllt werden da sie bereits Standard Angaben enthalten können bei bedarf jedoch geändert werden...
b_SetStreamDistance(id,Float:Streamer_Distance_ = DRAW_DIST);- Damit können die Distanzen für die Objekte nochmal neu gesetzt werden bzw. extra gesetzt werden für den Built in Streamer von Sa-mp
+ MapLoader Nebenfunktion
b_GetStreamVarID(varname[])- Gibt die StreamID wieder vom Objekt mit der enthaltenen Variable
- Wie wird die Variable festgelegt ? Ganz einfach sie wird aus dem Namen in des Objekts in der ".map" Datei festgelegt bzw. genau danach benannt so kann man bestimmte Objekte auch aus Maps locker ansprechen.
Beispiel bzw. als Vorzeigemodell ...Das Objekt aus der Map...
Code<object name="Test1" posX="478.566162" posY="-2389.019043" posZ="9.785888" rotX="0" rotY="0" rotZ="90.240852733105" model="1984"/>
oderCode<object id="Test1" posX="478.566162" posY="-2389.019043" posZ="9.785888" rotX="0" rotY="0" rotZ="90.240852733105" model="1984"/>Unser Virtuelle Variable für das Objekt hier "Test1" wie man sehen kann...
nun wollen wir die Position dieses Objekts herausfinden wissen jedoch die Stream ID nicht , wäre ja scheiße wenn man diese extra immer lokalisieren müsste...
new Float:poses[3];
b_GetPlayerPos(b_GetStreamVarID("Test1"),poses[0],poses[1],poses[2]);So nun haben wir die Position des gewünschten Objektes. Wie man sieht ein ganz einfaches Prinzip.
__________________________________________________________________________________________________________________
b_StartCore(intervall);- Startet den Streamer mit eigenem Intervall.
b_StopCore();- Beendet den Streamer sprich den Kern
b_ExitStreamer();- Beendet und entlädt den Streamer vollständig + Objekte und allem Zeugs.
__________________________________________________________________________________________________________________
geben beide zurück für welchen Spieler das Momentane Objekte geladen & entladen wurde ,
auch die ID des Stream Objekts wird zurückgegeben zudem noch die Anzahl der Momentanen
Objekte die für den Spieler aufgebaut wurden & die Maximale Anzahl der Objekte im Umkreis falls nötigINFO : VW -1 = Alle Welten genau das gleich gilt für Innenräume , auch den bestimmten Spieler für das Objekt auf -1 stellen für alle ansonsten sind
die Parameter nur Optional und müssen nur angegeben werden wenn es nötig ist.Download ( 4.3 ) ( 0.3a und b ) ( Achtung Streamer Distanz Einstellungen für den Built in Streamer in der 0.3a nicht verfügbar! )
Test Map + Beispiel ( Map Loader )
Dokumentation : Download ( PDF )
>> Update seit 26. August 2010 << ( 19:44 ) -
-
-
new names[][64] = {"Server Name 1","Server Name 2","Server Name 3"};
new upcount;public Changer(){
upcount++;
new fmx[64+32];
format(fmx,sizeof fmx,"hostname %s",(upcount == 1) ? (names[0]) : (upcount == 2) ? (names[1]) : (names[2]));
SendRconCommand(fmx);
if(upcount == 3)upcount = 0;
return 1;
}In OnGameModeInit
SetTimer("Changer",5000,1); -
Verstehe atm nicht was an dem Spiel so toll ist, die Grafiken sind billig, die Gestaltung ebenso & dann kostet es noch Geld
-
http://wiki.sa-mp.com/wiki/OnObjectMoved
Zudem gibt MoveObject die zeit zurück die gebraucht wurde bis das Objekt das Ziel erreicht hat, vllt brauchst du das auch noch
-
Sonst könnte ja nicht einmal auf den Server zugreifen

Admin Modus versucht ? -
Kompatibilitätsmodus eingestellt ? ( 2000,ME,98 ) ?
-
Stimmt eigentlich, wenn ein leerer GameText angezeigt wird Funktioniert es ebenso
-
#include <a_samp>
#include <a_players>
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA//forwards
forward LSTimer(playerid);
forward SFTimer(playerid);
forward LVTimer(playerid);public OnFilterScriptInit()
{
CreatePickup(1239,23,1683.6827,-2329.7661,13.5469,-1);//ls pickup
CreatePickup(1239,23,-1417.7489,-296.1070,14.1484,-1);//sf pickup
CreatePickup(1239,23,1676.0457,1447.8201,10.7856,-1);//lv pickup
Create3DTextLabel("[Flughafen LS]",COLOR_YELLOW,1683.6295,-2329.7297,14.2270,40.0,0,0);
Create3DTextLabel("[Flughafen SF]",COLOR_YELLOW,-1417.6017,-295.9125,14.7016,40.0,0,0);
Create3DTextLabel("[Flughafen LV]",COLOR_YELLOW,1676.0546,1447.7469,11.4576,40.0,0,0);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/flug ls", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,1.2,1683.6827,-2329.7661,13.5469)||IsPlayerInRangeOfPoint(playerid,1.2,-1417.7489,-296.1070,14.1484)||IsPlayerInRangeOfPoint(playerid,1.2,1676.0457,1447.8201,10.7856))
{
SetPlayerInterior(playerid,1);
SetPlayerPos(playerid,1.61,34.74,1199.0);
GivePlayerMoney(playerid,-3000);
SendClientMessage(playerid,COLOR_GREEN,"Du hast 3000$ für einen Flug nach LS bezahlt");
SetTimer("LSTimer",60000,0);
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du bist an keinem Flughafen");
}
return 1;
}
if (strcmp(cmdtext, "/flug sf", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,1.2,1683.6827,-2329.7661,13.5469)||IsPlayerInRangeOfPoint(playerid,1.2,-1417.7489,-296.1070,14.1484)||IsPlayerInRangeOfPoint(playerid,1.2,1676.0457,1447.8201,10.7856))
{
SetPlayerInterior(playerid,1);
SetPlayerPos(playerid,1.61,34.74,1199.0);
GivePlayerMoney(playerid,-300);
SendClientMessage(playerid,COLOR_GREEN,"Du hast 300$ für einen Flug nach SF bezahlt");
SetTimer("SFTimer",60000,0);
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du bist an keinem Flughafen");
}
return 1;
}
if (strcmp(cmdtext, "/flug lv", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,1.2,1683.6827,-2329.7661,13.5469)||IsPlayerInRangeOfPoint(playerid,1.2,-1417.7489,-296.1070,14.1484)||IsPlayerInRangeOfPoint(playerid,1.2,1676.0457,1447.8201,10.7856))
{
SetPlayerInterior(playerid,1);
SetPlayerPos(playerid,1.61,34.74,1199.0);
GivePlayerMoney(playerid,-300);
SendClientMessage(playerid,COLOR_GREEN,"Du hast 300$ für einen Flug nach LV bezahlt");
SetTimer("LVTimer",60000,0);
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du bist an keinem Flughafen");
}
return 1;
}
if (strcmp(cmdtext, "/flug", true) == 0)
{
SendClientMessage(playerid,COLOR_YELLOW,"/flug [ls,sf,lv]");
return 1;
}
return 0;
}public LSTimer(playerid)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,1694.4519,-2329.4133,13.5469);
return 1;
}public SFTimer(playerid)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,-1422.6346,-292.5664,14.1484);
return 1;
}
public LVTimer(playerid)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,1676.1832,1453.1887,10.7809);
return 1;
}