3D HUD
#1

В просторах интернета существует подобная система?
Reply
#2

Ага.
Reply
#3

Quote:
Originally Posted by Stuntff
View Post
Ага.
А можешь скинуть?
Reply
#4

Нужно самому писать.
Reply
#5

Quote:
Originally Posted by Kolstin
View Post
Нужно самому писать.
Код написан, но YSF крашит сервер. И я хотел глянуть, как там реализовано.
Reply
#6

Через персональные объекты, аттач объекта к игроку и материал.
Reply
#7

Quote:
Originally Posted by Mcc
View Post
Через персональные объекты, аттач объекта к игроку и материал.
Если через AttachObjectToPlayer, то текст будет моргать.
Reply
#8

Quote:
Originally Posted by me1m
View Post
Если через AttachObjectToPlayer, то текст будет моргать.
Quote:
Originally Posted by Mcc
View Post
Через персональные объекты
Подойдет и стример.
Reply
#9

Quote:
Originally Posted by Mcc
View Post
Подойдет и стример.
Для AttachDynamicObjectToPlayer нужен YSF, а из-за него краш сервера при подключении нового игрока.
Reply
#10

Ну так ищи в чем причина краша сервера с YSF при подключении нового игрока. Ищи и исправляй. В чем проблема? Нет проблемы.
Reply
#11

Quote:
Originally Posted by Mcc
Посмотреть сообщение
Ну так ищи в чем причина краша сервера с YSF при подключении нового игрока. Ищи и исправляй. В чем проблема? Нет проблемы.
Проблема в плагине
Reply
#12

Плагин здесь не при чем. Проблема в тебе.
Reply
#13

Quote:
Originally Posted by Mcc
Посмотреть сообщение
Плагин здесь не при чем. Проблема в тебе.
Я прикреплял объект на new.pwn. При подключении игрока краш.
Reply
#14

Ну так узнавай, почему происходит краш.
Reply
#15

Я не думаю что проблема в плагине. Скорей всего проблема в вашем коде которого вы не выложили но помимо этого просите помощи.
Reply
#16

При подключении второго игрока краш сампа
PHP код:
#include <a_samp>
#include <YSF>
#include <streamer>
main(){}
forward UpdateHealthEx();
new 
po_health[MAX_PLAYERS];
public 
OnGameModeInit()
{
    
SetTimer("UpdateHealthEx"1000true);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
po_health[playerid] = INVALID_OBJECT_ID;
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    
po_health[playerid] = INVALID_OBJECT_ID;
    if(
po_health[playerid] == INVALID_OBJECT_ID)
        
po_health[playerid] = CreateDynamicObject(19475, -100.0, -100.0, -100.00.00.00.0);
    
SetPVarInt(playerid"spawned"1);
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    
SetPVarInt(playerid"spawned"0);
    if(
po_health[playerid] != INVALID_OBJECT_ID)
        
DestroyDynamicObject(po_health[playerid]);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
SetPVarInt(playerid"spawned"0);
    if(
po_health[playerid] != INVALID_OBJECT_ID)
        
DestroyDynamicObject(po_health[playerid]);
    return 
1;
}
public 
UpdateHealthEx()
{
    for(new 
0all = (GetMaxPlayers()+1); != allp++)
    {
        if(
IsPlayerConnected(p) && !IsPlayerNPC(p) && GetPVarInt(p"spawned") == 1UpdateHealth(p);
    }
    return 
false;
}
stock UpdateHealth(const playerid)
{
    new 
Floathealthstring[20];
    
GetPlayerHealth(playeridhealth);
    
format(stringsizeof(string), "{ffffff}+%.0f"health);
    
SetDynamicObjectMaterialText(po_health[playerid], 0string90"Arial"701, -1677696100);
    
AttachDynamicObjectToPlayer(po_health[playerid], playerid, -0.4000, -0.6, -0.50.00000, -90.00000180.00000);
    return 
0;

Reply
#17

YSF это 100%
Reply
#18

Не по теме, но

PHP код:
public OnPlayerSpawn(playerid

    
po_health[playerid] = INVALID_OBJECT_ID
    if(
po_health[playerid] == INVALID_OBJECT_ID
        
po_health[playerid] = CreateDynamicObject(19475, -100.0, -100.0, -100.00.00.00.0); 
    
SetPVarInt(playerid"spawned"1); 
    return 
1

странная логика. Здесь не нужно po_health[playerid] = INVALID_OBJECT_ID; это надо делать в местах, где объект удаляется, или где он еще не создан (при подключении). Иначе обходим OnPlayerDeath и получаем туеву хучу диких объектов.
Reply
#19

Quote:
Originally Posted by stabker
Посмотреть сообщение
Не по теме, но

PHP код:
public OnPlayerSpawn(playerid

    
po_health[playerid] = INVALID_OBJECT_ID
    if(
po_health[playerid] == INVALID_OBJECT_ID
        
po_health[playerid] = CreateDynamicObject(19475, -100.0, -100.0, -100.00.00.00.0); 
    
SetPVarInt(playerid"spawned"1); 
    return 
1

странная логика. Здесь не нужно po_health[playerid] = INVALID_OBJECT_ID; это надо делать в местах, где объект удаляется, или где он еще не создан (при подключении). Иначе обходим OnPlayerDeath и получаем туеву хучу диких объектов.
Ты как раз в тему. Кажется больше не крашит
Reply
#20

От проблемы все же не избавился
PHP код:
#include <a_samp>
#include <YSF>
#include <streamer>
main(){}
forward UpdateHealthEx();
new 
po_health[MAX_PLAYERS];
public 
OnGameModeInit()
{
    
SetTimer("UpdateHealthEx"1000true);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
po_health[playerid] = INVALID_OBJECT_ID;
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    
po_health[playerid] = CreateDynamicObject(19475, -100.0, -100.0, -100.00.00.00.0);
    
SetPVarInt(playerid"spawned"1);
    
GivePlayerWeapon(playeridWEAPON_M4250);
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    
SetPVarInt(playerid"spawned"0);
    if(
po_health[playerid] != INVALID_OBJECT_ID)
    {
        
DestroyDynamicObject(po_health[playerid]);
        
po_health[playerid] = INVALID_OBJECT_ID;
    }
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
SetPVarInt(playerid"spawned"0);
    if(
po_health[playerid] != INVALID_OBJECT_ID)
    {
        
DestroyDynamicObject(po_health[playerid]);
    }
    return 
1;
}
public 
UpdateHealthEx()
{
    for(new 
0all = (GetMaxPlayers()+1); != allp++)
    {
        if(
IsPlayerConnected(p) && !IsPlayerNPC(p) && GetPVarInt(p"spawned") == 1UpdateHealth(p);
    }
    return 
false;
}
stock UpdateHealth(const playerid)
{
    new 
Floathealthstring[20];
    
GetPlayerHealth(playeridhealth);
    
format(stringsizeof(string), "{ffffff}+%.0f"health);
    
SetDynamicObjectMaterialText(po_health[playerid], 0string90"Arial"701, -1677696100);
     
AttachDynamicObjectToPlayer(po_health[playerid], playerid, -0.4000, -0.6, -0.50.00000, -90.00000180.00000);
    return 
0;

Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)