Und wieso nicht einfach das Fahrzeug eines Spielers nach dem Disconnecten löschen und beim Connecten wieder erstellen?^^
Beiträge von Double-O-Seven
-
-
Für was einen Vehiclestreamer benutzen, wenn nur 300-400 Fahrzeuge drin sind?^^
-
Könnt ich versuchen xD
-
Ich habe keinen Pickupstreamer aber noch einen Checkpointstreamer.
Double-O-Icons - Mapiconstreamer
Double-O-Checkpoints - Checkpointstreamer -
Double-O-Objects
Today, I was bored, so I made an object streamer, because my server needed one.
I implented everything important.♦ What does it do?
- Streaming objects, as much as you want
- Move objects
- Set objects pos
- Set objects rotation when 0.3 comes and SetPlayerObjectRot fixed is ;X
- Calculate the closest objects near you, when you use SetPlayerPos (if you don't lag too much)!
- Streaming objects in all or in one virtual world
♦ Functions:
CreateStreamObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:distance,worldid);//Create an object
DestroyStreamObject(objectid);//Destroy it
StreamObjects();//Stream the objects
StreamPlayerObjects(playerid,Float:x,Float:y,Float:z);//Stream it for one player
MoveStreamObject(objectid,Float:x,Float:y,Float:z,Float:speed);//Move a streamed object
StopStreamObject(objectid);//Stop moving a streamed object
DOO_SetPlayerPos(playerid,Float:x,Float:y,Float:z);//Use this instead of SetPlayerPos!!!
DOO_SetVehiclePos(vehicleid,Float:x,Float:y,Float:z);//Use this instead of SetVehiclePos!!!
SetStreamObjectRot(objectid, Float:rX, Float:rY, Float:rZ);//does not work in this version of SA-MP
SetStreamObjectPos(objectid, Float:x, Float:y, Float:z);//Set the pos of an object
SetObjectViewDistance(objectid,Float:distance);//Set the view distance
IsValidStreamObject(objectid);//Check if it is created
DOO_OnGameModeInit();//Start streaming - put it under OnGameModeInit
DOO_OnPlayerConnect(playerid);//Put this under OnPlayerConnect
DOO_OnPlayerDisconnect(playerid);//Put this under OnPlayerDisconnect♦ Where can I download it?
- Here: Sendspace.com (.inc)
- Or here: Pastebin.com
Please report bugs and write a comment!
Have fun!---
Sorry, dass es alles in Englisch ist, denn ich habe es zuerst im offiziellen Forum veröffentlicht und habe nun keine Lust mehr, es zu übersetzen ;X
MfG Double-O-Seven -
Es geht noch einfacher:
if(text[0]=='7')
{
text[0]='/';
OnPlayerCommandText(playerid,text);
return 0;
} -
new string[128]; SendClientMessage(playerid,0xFFAAFFFF,string); crasht.
Der GivePlayerMoney-Bug ist noch nicht ganz behoben, Server ist nochmals gecrasht. Und ich finde jetzt wirklich nichts-.-
public GivePlayerMoneyEx(playerid,amount)
{
new money;
if(GetPlayerMoneyEx(playerid)+amount>MAX_POCKET_MONEY)
money=MAX_POCKET_MONEY-GetPlayerMoneyEx(playerid);
else
money=amount;
PlayerInfo[PLAYER_MONEY][playerid]+=money;
GivePlayerMoney(playerid,money);
return money;
}stock GivePlayerMoneyWithText(playerid,amount)
{
if(amount==0)
return 0;new money=GivePlayerMoneyEx(playerid,amount);
new string[32];
if(money>0)
format(string,sizeof(string),"~g~+$%d",money);
else if(money<0)
format(string,sizeof(string),"~r~-$%d",money*-1);
GameTextForPlayer(playerid,string,0,1);
return amount;
}
Wo kann es noch Probleme geben? Leer ist der String ja nicht mehr. -
Mods deinstallieren? SA und SA-MP neuinstallieren? Vielleicht hilfts.
-
Hi,
After I've recognized that my old streamer (Double-O-Icons) wasn't very fast, I've decided to rewrite it!
This one is much faster, so the old one suxx...Functions:
CodeInitMapIconStreaming(); - Use this in your script to start streaming, you should use AFTER creating all map icons. CreateMapIcon(modelid,color,Float:x,Float:y,Float:z); - Create a mapicon. DestroyMapIcon(id); - Destroy an mapicon. MapIconUpdate(); - Don't use this in your script. ResetMapIcons(playerid); - Use this when a player disconnects. GetClosestUnusedMapIcon(playerid) - You don't need to use this. GetDistanceToPoint(playerid,Float:x,Float:y,Float:z); - You can use this for other things in your script, too.
KLICK for Pastebin
KLICK to downloadSo, have fun!
And please report bugs!
Sorry, dass es nur in Englisch ist, aber das sollte kein Problem sein -
Double-O-Icons2 kommt bald! Danke an Goldkiller! Ich habe den Streamer noch ein bisschen geändert und er ist sehr schnell :>
//Edit:
Der neue Streamer hat fast KEINEN Einfluss auf die Prozessorauslastung! -
Ich wäre klug, den Code vom Kickcommand und von OnPlayerDisconnect zu posten.
-
Thx! Ich werds mal versuchen.
//Edit: Du hast allerdings den Streamer modifiziert, der nicht geht, weil MapiconID nicht höher als 31 sein kann. Wieso eigentlich?! Wenn man sie schon selbst setzen muss, dann doch wenigstens einen beliebige Zahl >.
//Edit 2:
Wird <tAxI>'s Streamer weniger CPU beanspruchen als der, den ich oben zum Download bereitgestellt habe? -
Klar hab ich den selbst gemacht. Aber suche jemanden, der ihn so abändert, dass er schneller läuft. Denn ich weiss nicht, wie ich ihn ohne solche 32 Slots machen soll.
Ich habe ihn schon neu geschrieben:
PASTEBIN
Aber da werd ich verarscht, weil der Server keine höheren IDs für SetPlayerMapIcon als 31 annimmt-.-
Das Problem ist einfach, dass er so, wie ich ihn gemacht habe, für meinen Hoster zu lahm ist. Bei 30 Spielern fangen sich die anderen Kunden meines Hosters an zu beklagen, wegen Serverlag. Der SAMP-Server frisst da dann immer um die 25% der CPU-Auslastung - wegen dem Streamer.
Ich musste jetzt den Streamer abspecken, damit nur noch ein Mapicon auf einmal angezeigt wird, was sehr viel besser geht, aber einfach ***eisse ist. -
Ehm, Tag!
Ich habe ein Problem mit dem Streamer! Er ist zu langsam und belastet den Server zu stark! Ich suche nun jemanden, der ihn optimiert. -
ROOOOOOOOOOOOOOOOOOOOOOOOOOOFL!
Der Bug beim Derby mit "ungesetzter" Variable die da =0 sein sollte: Es lag nicht daran!
Ich bin durch Zufall auf etwas gestossen, was Server crashte: Beim Derby und auch gerade eben beim abliefern eines Fahrzeuges:
stock GivePlayerMoneyWithText(playerid,amount)
{
new money=GivePlayerMoneyEx(playerid,amount);
new string[32];
if(money>0)
format(string,sizeof(string),"~g~+$%d",money);
else if(money<0)
format(string,sizeof(string),"~r~-$%d",money*-1);
GameTextForPlayer(playerid,string,0,1);
return amount;
} Ein Gametext mit leerem String!
In der Funktion wird String nicht formatiert, wenn Betrag ==0, z.B. beim Derby. Beim /erlaubnis hunter genau das selbe. Ein Bug, den ich schon vor dem Post gefixt hatte, spuckte ebenfalls ein leeres String aus beim Gametext => CRASH!
Ich habs! Ich hab die Lösung gefunden! SCHEISSE.
=> Leerer Gametext crasht Server! -
Das mit dem Derby ist etwas, was ich eben lösen konnte (das wieso war irgendwie rhetorisch :X). Ich benutzte diese Variable: GivePlayerMoneyWithText(winner,MinigameInfo[DERBY][STARTED_PLAYER_COUNT]*3500);
Ich hatte da vergessen für MinigameInfo[DERBY][STARTED_PLAYER_COUNT] eine Zahl zu setzen. Da crashte der Server. Als ich dann MinigameInfo[DERBY][STARTED_PLAYER_COUNT]++; gemacht habe, was notwendig war, crashte es nicht mehr.
Seltsam ist, dass der Server (Linux) crashte, weil ich es nicht gesetzt hatte. Eigentlich sollte das doch einfach ==0 gewesen sein. Naja, es ist behoben.
Wenn der Server nun alles einzeln,nacheinander ausführt, und im Command kein Bug ist, crasht dann einer also den Server?
//Edit:ZitatCrasht der Server denn immer bei "/erlaubnis hunter" oder tat er das nur einmal?
Ja. Nur das eine Mal. Ich habe einmal ein FS gemacht, das bei jedem Callback ein printf macht, um zu schauen, was Server crasht. Keine Regelmässigkeiten. Ausser das mit dem Derby, was offensichtlich war, da es immer dort crashte.
Ich glaube, jemand crasht den Server -.- -
Das Problem ist, dass der Server manchmal zufällig crasht und ich finde einfach keine Bugs. Ich logge viel in der Serverlog und ich werde einfach nicht schlau. Nie ist bei einem Crash die selbe Situation. Eine Ausnahme: Bei einem Derby ist Server immer abgestürzt. Wieso?
Wegen einer Variable mit einem enum. Ich habe vergessen, diese Variable (eine Integer) zu setzen, z.B. =5 oder =1. Diese Variable war dann für eine Multiplikation notwendig. Und was geschah? Server crasht jedes mal, wenn diese Variable multipliziert werden sollte.
Weiter kommt allerdings hat alles, was vor dem Crash zuletzt geschah, etwas mit irgendwelche enums zu tun.
Letztens ist der Server mitten in diesem Command gecrasht: PASTEBIN
Woher weiss ich, dass er mitten in diesem Command gecrasht ist?
Wegen den Crashs habe ich folgendes angewendet:
public OnPlayerCommandText(playerid,cmdtext[]){if(OnPlayerCommandTextEx(playerid,cmdtext))printf("Erfolgreich!");return 1;}
Alle Commands sind in OnPlayerCommandTextEx(...) und das return IMMER mit 0, wenn es keine Bugs gibt.
Der Spieler benutzt "/erlaubnis hunter". Der Command war NICHT erfolgreich, Server crashte. Aus welchen Gründen auch immer.
Nun würde mich interessieren: Was ist da der Bug?! Ich kein beim besten Willen keinen finden
Weiter: Führt der Server verschiedene Sachen im Script gleichzeitig aus? Denn dann würde das für mich heissen, dass der Bug auch woanders sein kann.
Wenn nicht, dann ist da irgendwo ein Bug, oder jemand hat den Server gecrasht.
Weiter ist seltsam, dass der Server nur Abends crasht.
Zusammenfassung: Kann es sein, dass ein enum den Server crasht oder dass jemand meinen Server crasht? -
Und wieso wird beim compilen kein Error angezeigt, wenn ich es nicht mache?
Kann es sein, dass Server manchmal abkackt, weil ich es nicht mache? -
Nabend.
Ich habe eine kleine Frage:
Ist das richtig:
enum IRGENDWAS
{
KA[32],
Float:KA2,
KA3;
}
oder
enum IRGENDWAS
{
KA[32],
Float:KA2,
KA3;
};
?
Ich meine jetzt den Strickpunkt am Schluss. Kann ich den weglassen oder ist er notwendig?
Denn bis heute hab ich ihn immer weggelassen ohne Error beim compilen.
Hat das irgendwelche Folgen? -
Am fügst du die Icons bei OnGameModeInit hinzu. Da ich keine Funktion hinzugefügt habe, mit der man sie für gewisse Spieler verstecken, bzw. wieder sichtbar machen kann, ist alles andere irgendwie überflüssig, wobei es manchmal dennoch gut sein kann, wie z.B. bei meiner Anwendung: Häuser.
Zum: Verstecken: Wer ein kleines bisschen versteht, was im Streamer vorgeht, sollte das locker modifizieren können.