Jump to content

návod Nejoptimalizovanejsi streamer objektu


Recommended Posts

Zdravim,
rozhodl jsem se pro vas udelal tut jak na nejoptimalizovanejsi streamer
funguje na principu ze nekontrolujete kazdy object zvlast jako to u streameru byva ale kontrolujete jestli je nebo neni v zone a podle toho zobrazite nebo schovate objekty

vytvorime si public ktery se bude vyvolavat kazdou terinu (nebo pridame do publicu)

SetTimer("MultiTimer",1000,1);

forward MultiTimer();
public MultiTimer()
{
for(new i;i
pokud nemate
stock IsPlayerInArea(playerid,Float:minx1,Float:maxx1,Float:miny1,Float:maxy1)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
if(x > minx1 && x < maxx1 && y > miny1 && y < maxy1) return 1;
return 0;
}

jak vidite je to velmi jednoduche a vymyslel by to asi kazdy
takze pokud chcete setrit svoji milovanou CPU tak prvni co odstranite je CreateDynamictObject nebo Xstreamer;o++)>;i++)

 

Návod označen jako platný

Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný

Link to comment
Share on other sites

Chapu to dobře že pokud je hráč v nějaký zóně, tak se mu zobrazí objekty (hráčovo) a proměna na kontrolu jestli je v zóně, a pak když ta proměna je true ale on není v zoně tak to ty objekty smaže?

Link to comment
Share on other sites

Chapu to dobře že pokud je hráč v nějaký zóně, tak se mu zobrazí objekty (hráčovo) a proměna na kontrolu jestli je v zóně, a pak když ta proměna je true ale on není v zoně tak to ty objekty smaže?

jo je to tak ta promena neni v bool z toho duvodu kdyby byly zony dve tak se musi pouzit ta sama promena treba s hodnotou 2

Link to comment
Share on other sites

Chapu to dobře že pokud je hráč v nějaký zóně, tak se mu zobrazí objekty (hráčovo) a proměna na kontrolu jestli je v zóně, a pak když ta proměna je true ale on není v zoně tak to ty objekty smaže?

jo je to tak ta promena neni v bool z toho duvodu kdyby byly zony dve tak se musi pouzit ta sama promena treba s hodnotou 2

Pak mi to příjde jako lehká věc ale vůbec by mě to takhle nenapadlo, pěkný : -) :thumbup:

 

Ještě dotaz - když třeba příjde 20 lidí do jedný zóny najednou, nebude to víc zatěžovat než kdyby se udělalo to že kdyby kdokoliv byl v zóně tak by se objevili normální CreateObjecty, ošetřilo by se to aby když příjde další to nevytvořilo objekty 2x a když v zóně nebude vůbec nikdo tak by se objekty smazali?

Link to comment
Share on other sites

Chapu to dobře že pokud je hráč v nějaký zóně, tak se mu zobrazí objekty (hráčovo) a proměna na kontrolu jestli je v zóně, a pak když ta proměna je true ale on není v zoně tak to ty objekty smaže?

jo je to tak ta promena neni v bool z toho duvodu kdyby byly zony dve tak se musi pouzit ta sama promena treba s hodnotou 2

Pak mi to příjde jako lehká věc ale vůbec by mě to takhle nenapadlo, pěkný : -) :thumbup:

 

Ještě dotaz - když třeba příjde 20 lidí do jedný zóny najednou, nebude to víc zatěžovat než kdyby se udělalo to že kdyby kdokoliv byl v zóně tak by se objevili normální CreateObjecty, ošetřilo by se to aby když příjde další to nevytvořilo objekty 2x a když v zóně nebude vůbec nikdo tak by se objekty smazali?

zobrazeni objektu zere spis z clienta logicky to jemu musi zobrazit CreateObject musi byt logicky udelany tim zpusobem jako jsou streamery i CreateObject (nemohly vedet kam si date objekty) je streamovany ale zatezuje mene protoze je v sa-mp aplikaci

takze vlastne CreatePlayerObject (hlida jen jednoho hrace) je uspornejsi nez CreateObject (hlida vsechny) ale ten rozdil je zanedbatelny

 

je to jednoduchy a prave proto ze to hodne lidi nenapadne sem to napsal

Link to comment
Share on other sites

  • 2 weeks later...

hej som ece zaciatocnik v pawne a píše mi to tieto errory asi tam niečo nemam nadefinovane a ani neviem čo .. pls poradte

C:\DOCUME~1\Martin\Plocha\zabij.pwn(1738) : error 017: undefined symbol "MAX_PLAYERS_EX"
C:\DOCUME~1\Martin\Plocha\zabij.pwn(1744) : error 017: undefined symbol "Objekty"
C:\DOCUME~1\Martin\Plocha\zabij.pwn(1744) : warning 215: expression has no effect
C:\DOCUME~1\Martin\Plocha\zabij.pwn(1744) : error 001: expected token: ";", but found "]"
C:\DOCUME~1\Martin\Plocha\zabij.pwn(1744) : error 029: invalid expression, assumed zero
C:\DOCUME~1\Martin\Plocha\zabij.pwn(1744) : fatal error 107: too many error messages on one line

radky

1738: for(new i;i

1744: if(Objekty != 1)//pokud nema objekty zobrazene "help"

Link to comment
Share on other sites

C:\DOCUME~1\Martin\Plocha\zabij.pwn(1747) : error 017: undefined symbol "PrvniObj"

C:\DOCUME~1\Martin\Plocha\zabij.pwn(1747) : warning 215: expression has no effect

C:\DOCUME~1\Martin\Plocha\zabij.pwn(1747) : error 001: expected token: ";", but found "]"

C:\DOCUME~1\Martin\Plocha\zabij.pwn(1747) : error 029: invalid expression, assumed zero

C:\DOCUME~1\Martin\Plocha\zabij.pwn(1747) : fatal error 107: too many error messages on one line

 

PrvniObj = CreatePlayerObject(playerid,5428,803.4574,-3245.8669,3.0372,0,0,0);

Link to comment
Share on other sites

omg nejde .. furt to píše viac a viac errorov .. si sem mal dat vsechno do navodu..a ne ze : sak to si domyslite ,ja som zaciatocnik a nedomyslim si to...nejaky iny TUT tu eni

Link to comment
Share on other sites

omg nejde .. furt to píše viac a viac errorov .. si sem mal dat vsechno do navodu..a ne ze : sak to si domyslite ,ja som zaciatocnik a nedomyslim si to...nejaky iny TUT tu eni

 

Navody jsou od toho aby jsi se učil a ne aby jsi to kopiroval..

Link to comment
Share on other sites

  • 1 month later...
D:\VSE\Vse s pawnem\Monster.pwn(434) : error 017: undefined symbol "CreateStreamerObject"

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

 

 

1 Error.

 

"help"

 

Hore v mode si nadefinuj CreateStreamerObject a už nekopčite a :spam:

Link to comment
Share on other sites

omfg tak jednoduché to nieje

 

 

tak ja ti poviem ako si to "nadefinueš"

sprav si pár premien (6 floatov, 1 modelid, 1 created = createobject(...),bool:cr)

 

sprav si stock...

stock CreateStreamerObject(modelid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Flot:rz){

 

 

sem nastavíš modré hodnoty zeleným premenám

 

}

 

a potom postupuj podľa návodu od ATomasa...

Hore v mode si nadefinuj CreateStreamerObject

gratulujem k hlúpemu postu

Link to comment
Share on other sites

  • 2 months later...
  • 3 years later...

Proč mi tento kod hádže error 001: expected token: "#endif", but found "-end of file-"
 

 

 

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include

#if defined FILTERSCRIPT
#if MAX_PLAYERS_EX > MAX_PLAYERS

public OnFilterScriptExit()
{
return 1;
}

#else

#define dcmd(%1,%2,%3) if((strcmp((%3)[1],#%1,true,(%2))==0)&&((((%3)[(%2)+1]==0)&&(dcmd_%1(playerid,"")))||(((%3)[(%2)+1]==32)&&(dcmd_%1(playerid,(%3)[(%2)+2]))))) return 1

#define COLOR_G0LD 0xFFCC00FF
#define COLOR_W4RN1NG 0xFF1400FF
#define COLOR_GR33N 0x00BA00AA
#define MAX_PLAYERS_EX 100

new Objekty[MAX_PLAYERS];
new PrvniObj[MAX_PLAYERS];
new PocetObj[MAX_PLAYERS];

#endif

public OnGameModeInit()
{
SetTimer("MultiTimer",1000,1);
return 1;
}

forward MultiTimer();
public MultiTimer()
{
for(new i;i {
if(IsPlayerConnected(i))
{
if(IsPlayerInArea(i,594.0875,1346.0394,-3467.1555,-3077.8024))//pokud je v zone udelejte ji o neco vetsi nez slozeni objektu aby se objekty neukazaly na posledni chvily (zadavejte v poradi minx,maxx,miny,maxy jinak to nebude fungovat)
{
if(Objekty[i] != 1)//pokud nema objekty zobrazene
{
PrvniObj[i] = CreatePlayerObject(playerid,5428,803.4574,-3245.8669,3.0372,0,0,0);// u prvniho objketu musi byt PrvniObj[i] = CreatePlayerObject je to kuli tomu ze kdzy v modu mate treba CreateObjet tak id neni 0
Objekty[i] = 1;//zvolime si id zony podle ktere budeme poznavat jestli uz ma objekty zobrazene viz pozminka vise
PocetObj[i] = 1;//napiseme kolik je objektu dohromady celkem velmi dulezite kdyz zadate cislo mensi nebudou se mazat vsechny objekty kdyz cislo vetsi bude vam to umazavat jine objekty
}
}else{//pokud neni v zone
if(Objekty[i] == 1)//pokud ma zobrazene objekty
{
for(new o;o Objekty[i] = 0;//vynulujeme ze neni v zadne zone
PocetObj[i] = 0;//toto neni tak dulezite ale pro jistotu
}
}
}
}
return 1;
}

stock IsPlayerInArea(playerid,Float:minx1,Float:maxx1,Float:miny1,Float:maxy1)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
if(x > minx1 && x < maxx1 && y > miny1 && y < maxy1) return 1;
return 0;
}

 

;o++)>;i++)

 

Prosím o Help fakt už neviem si s tým poradiť mam to aj odtabovane to len tu nejak neodtabovalo

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...