du musst
/pawno/includes/streamer.inc
und
/plugins/streamer.dll (Windows) bzw /plugins/streamer.so (Linux)
updaten
Beiträge von d0ma
-
-
#define FREE_VW_OFFSET 10000000 //damit keine geringen IDs die meist schon im script verwendet werden genutzt werden
stock SetPlayerInOwnWorld(playerid)
{
SetPlayerVirtualWorld(playerid, FREE_VW_OFFSET+playerid);
}
der OffSet um Überschneidungen zu vermeiden -
Kurze Frage: Kann man ein Array während der Server in Betrieb ist noch vergrößern?
MfG Firerfan
nein leider nicht möglich in PAWN, einzige Möglichkeit während der Laufzeit mehr Speicher zu bekommen ist SetPVarInt/String/Float oder mit Plugins -
new PQuery[]="INSERT INTO blitzer (`Blitzerid`,`Blitzerx`,`Blitzery`,`Blitzerz`,`BlitzerRotz`,`Geschwindigkeit`,`Strafe`,`Punkte`,`LastBlitz`,`Filmabschnitte`, `Toleranz`,`Inuse`) VALUES ('%d','%f','%f','%f','%f','%d','%d','%d','%s','%d','%d','%d')";printf("%d",strlen(PQuery));
was strlen ausgibt wirst du wohl wissen vergleich mal die größe mit der deines strings den du deklariert hast
new query[128];
Schwachsinn, für %f und %d werden andere Werte eingesetzt also ist das strlen nicht richtigeinfach wie ich es oben beschrieben habe
-
new query[128];
ist nicht genug platz, die abfrage hat mehr als 128 Zeichen, heißt soviel wie das die Abfrage abgeschnitten wird nach den 127 Zeichen->
new query[550]; wie bei LoadBlitzer ist warscheinlich ausreichend ?
-
HIer:
suche mal nach GetPlayerSurfingVehicleID im Script (Car Surfing)
suche mal nach SetPlayerSkin im Script (skin ändert sich) -
da fehlen { und } klammern bei dem if, das if besteht nur aus new Name[24]; da keine klammern da sind, so ist new Name[24]; unterhalb auch nicht definiert:
So:
ocmd:irc(playerid,params[])
{
new string[128],text[128];
if(sscanf(params,"s",text))return SendClientMessage(playerid,-1,"Tippe: /irc [Text]");
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(irc[i] == irc[playerid])
{
new Name[24];
GetPlayerName(playerid,Name,24);
format(string,sizeof(string),"IRC: %s : %s",Name,text);
SendClientMessage(i,-1,string);
}
return 1;
}
return 1;
} -
Ihr und euere OnPlayerUpdate paranoya!!!!! Ihr lest einmal ein Tutorial und OnPlayerUpdate ist schlecht für immer und ewig, schwachsinn
Also die Funktion würde schon ausreichen
SetTimer("VehicleCheck",1000,true);//OnGameModeInitforward VehicleCheck();
public VehicleCheck()
{
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(!IsPlayerInAnyVehicle(i)) continue;
if(!IsPlayerInRangeOfPoint(i,25.0,X,Y,Z)) continue;
SetVehicleToRespawn(GetPlayerVehicleID(i));
}
return 1;
}
An den XYZ nur die Coordinaten eintragen und alles geht
Also meiner Meinung nach ist das in OnPlayerUpdate besser aufgehoben....
siehe http://forum.sa-mp.de/san-andr…ng-fragen-471#post1472729 als Grund -
Die Variable existiert schon, du musst sie umbennen.
new Hour, _Minute, Second;
gettime(Hour, _Minute, Second);
if(Hour >= 22 && Hour <= 8)return SendClientMessage(playerid, -1, "Du kannst dich jetzt nicht registrieren, bitte versuch es später erneut.");
Mit dem code kann man sich IMMER registrieren.
Eine Zahl "Hour" kann nicht gleichzeitig >=22 und gleichzeitig <= 8 sein = Immer falsch die if Abfrage(egal zu welcher zeit)
statt dem && muss man einschreiben
-
Wer es genauer haben muss:
ZitatSA:MP 0.1 IS RELEASED! :: Posted by kyeman on 10 May 2006
SA:MP 0.1b Released :: Posted by Mike on 21 May 2006
SA:MP 0.1b r2 Server :: Posted by Mike on 17 Feb 2007
SA-MP 0.2 is released! :: Posted by kyeman on 20 Jun 2007
SA-MP 0.2.1 is released :: Posted by kyeman on 24 Jun 2007
0.2.1 R2 Server Released :: Posted by kyeman on 25 Jul 2007
SA-MP 0.2.2 is released :: Posted by kyeman on 29 Aug 2007
SA-MP 0.2.2 R2 Client Released :: Posted by kyeman on 31 Aug 2007
SA-MP 0.2.2 R3 Client Released :: Posted by SA-MP on 20 Jun 2008
SA-MP 0.2X Released :: Posted by SA-MP on 20 Nov 2008
SA-MP 0.3a Released :: Posted by SA-MP on 17 Oct 2009
SA-MP 0.3b Released :: Posted by SA-MP on 21 Aug 2010
SA-MP 0.3c Released :: Posted by SA-MP on 29 Dec 2010
SA-MP 0.3d Released :: Posted by SA-MP on 1 Dec 2011
SA-MP 0.3e Released :: Posted by SA-MP on 8 May 2012
SA-MP 0.3x Released :: Posted by SA-MP on 31 Jan 2013 -
Das hat nicht so lange gedauert, GTA-SA kam für den PC mitte 2005 raus und SA-MP gab es bereits im ersten Halbjahr von 2006
Vorher wurde auch schon an VC:MP (Vice City) gearbeitet, was natürlich eine gute Basis für SA-MP war.
-
Im Prinzip: Warum ein Objekt von LV einen Object slot nehmen lassen(von den 1000 möglichen) wenn der Spieler in LS ist, wo er das Objekt sowieso nicht sehen kann weil er soweit weg ist.
Es gibt 1000 Objekt Slots, nun gibt es die Idee nur die Objekte um den Spieler herum zu laden.
Also wird ständig überprüft welche Objekte aus einer Liste überhaupt in der Nähe des Spielers sind, die nah da sind werden mit CreatePlayerObject hinzugefügt, alle anderen die weit weg sind und vorher geladen waren werden mit DestroyPlayerObject entfernt. -
Hallo ich suche ein Säulenobjekt.
Kann mir jemand die ID nennen?//edit alte Anfrage hat sich erledigt.
"Column"(Säule): http://gta-sa-mp.de/object/?searchName=column
scheinen aber mehrere zu seinIch suche ein ring für ein kreisverkehr es sollte einer sein wo man nicht durchfahren kann.
"fountain"(Brunnen): http://gta-sa-mp.de/object/?searchName=fountain kann man durchfahren aber schau dir mal die kleinen pflanzen hier an(unten): "plant" http://gta-sa-mp.de/object/?searchName=plant die kannst du rundrum setzen -
für was der for loop ? reichen nicht einfach die 2 Zeilen im inneren ?
for(new i=1; i<MAX_PLAYERS; i++)
{
if(listitem==i)
{
ZeileZ[playerid]=listitem;
SendClientMessageEx(playerid,Rot,"%i",ZeileZ[playerid]);
break;
}
}
und
ZeileZ[playerid]=listitem;
SendClientMessageEx(playerid,Rot,"%i",ZeileZ[playerid]);
würden das gleiche macehn -
dann musst du genauer sage was du machen willst
vll geht es ja noch eifnacher als mit switch case
-
statt if(listitem==1)
{
x=1;
}if(listitem==2)
{
x=2;
}
.....
eben x=listitem; -
Da sich [DT]Sniper unsicher ist und ich es schon geschrieben habe:
statt dem sizeof(x[0])
musst du bei 2 Dimensionalen Arrays sizeof(x[]) schreiben -
Das hier sollte die Lösung sein:
sscanf teilt einen text mit dem suchen nach leerzeichen(" ") auf, deine datei hat aber kommas(",")entweder kommas in der datei durch leerzeichen ersetzen
oder sscanf umschreiben zu:
sscanf(line, "p<,>dffffff",....
damit es auch nach kommas aufteilt -
Ich suche diese Disco leuchten.. also nicht dieses Große mit 2 leuchten sondern diese Streifen...
Das hier: 18102(klick für Bild)Oder du gibst hier http://gta-sa-mp.de/object/ bei "Search by name:" einfach "light"(für licht) ein und findest noch ein Dutzend andere Lichter
-
Weiß jemand eine Formel um den Mittelpunkt einer Vierecks auszurechnen?
wie liegt das Viereck vor ? 2D oder 3D, gedreht ? wenn es ein einfaches Viereck ist, das aus 2 Punkten aus aufgespannt wird(min und max), dann genügt das hier:
SquareCenter2D(&Float:result_x, &Float:result_y, Float:min_x, Float:min_y, Float:max_x, Float:max_y)
{
result_x = floatdiv( floatsub( max_x, min_x ), 2.0);
result_y = floatdiv( floatsub( max_y, min_y ), 2.0);
return 1;
}@[DT]Beavis: @Rawr:
Ich finde die OnPlayerUpdate version um einiges besser als einen Timer...
public timer()
{
for(new i=0; i< MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(...)
{
//.......
//.......
}
}
}
= sagen wir mal für 200 Spieler eine range-Abfrage auf einen schlag(200x)oder so: (besser)
public OnPlayerConnect(playerid)
{
lastRangeCheck[playerid] = GetTickCount();
return 1;
}new lastRangeCheck[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
new tick = GetTickCount(); // wird bei mir jedes mal mit OnPlayerUpdate ausgeführt
if(tick - lastRangeCheck[playerid] > 100) // alle 100 ms
{
if(IsPlayerInRangeOfPoint(...)
{
//.......
//.......
}
}
}
= für alle Spieler zu einem anderen Zeitpunktso einfach kann man OnPlayerUpdate nutzen um 200 Aufgaben aufzuteilen