Пример #1
0
func InitializePlayer(int plr)
{
	var i;
	// Script player owns power crystals
	if (GetPlayerType(plr) == C4PT_Script)
	{
		g_crystal_player = plr;
		for (i=0; i<GetPlayerCount(C4PT_User); ++i) SetHostility(plr, GetPlayerByIndex(i, C4PT_User), true, true, true);
		while (GetCrew(plr)) GetCrew(plr)->RemoveObject();
		InitPowerCrystals(plr);
		return true;
	}
	if (g_crystal_player != NO_OWNER) SetHostility(g_crystal_player, plr, true, true, true);
	// First player init base
	if (!g_was_player_init)
	{
		CreateScriptPlayer("POMMES", 0, 0, CSPF_FixedAttributes | CSPF_NoEliminationCheck | CSPF_Invisible);
		InitBase(plr);
		g_was_player_init = true;
	}
	// Position and materials
	var crew;
	for (i=0; crew=GetCrew(plr,i); ++i)
	{
		crew->SetPosition(2100+Random(40), 233-10);
		crew->CreateContents(Shovel);
	}
	return true;
}
Пример #2
0
global func FxHitCheckDoCheck(object target, proplist effect)
{
    var obj;
    // rather search in front of the projectile, since a hit might delete the effect,
    // and clonks can effectively hide in front of walls.
    var oldx = target->GetX();
    var oldy = target->GetY();
    var newx = target->GetX() + target->GetXDir() / 10;
    var newy = target->GetY() + target->GetYDir() / 10;
    var dist = Distance(oldx, oldy, newx, newy);
    var is_human = GetPlayerType(target->GetController()) == C4PT_User;

    var shooter = effect.shooter;
    var live = effect.live;

    if (live)
        shooter = target;

    if (dist <= Max(1, Max(Abs(target->GetXDir()), Abs(target->GetYDir()))) * 2)
    {
        // We search for objects along the line on which we moved since the last check
        // and sort by distance (closer first).
        for (obj in FindObjects(Find_OnLine(oldx, oldy, newx, newy),
                                Find_NoContainer(),
                                Find_Layer(target->GetObjectLayer()),
                                Find_PathFree(target),
                                Sort_Distance(oldx, oldy)))
        {
            // Excludes
            if (!obj) continue; // hit callback of one object might have removed other objects
            if(obj == target) continue;
            if(obj == shooter) continue;
            if (is_human) {
                if (obj == g_windgen1) continue;
                if (obj == g_windgen2) continue;
                if (obj == g_windgen3) continue;
                if (obj == g_windmill) continue;
            }

            // Unlike in hazard, there is no NOFF rule (yet)
            // CheckEnemy
            //if(!CheckEnemy(obj,target)) continue;

            // IsProjectileTarget or Alive will be hit
            if (obj->~IsProjectileTarget(target, shooter) || obj->GetOCF() & OCF_Alive)
            {
                target->~HitObject(obj);
                if (!target)
                    return;
            }
        }
    }
    return;
}
Пример #3
0
func InitializePlayer(int plr)
{
	// Players only
	if (GetPlayerType(plr)!=C4PT_User) return;
	// Scenario init
	if (!g_is_initialized) g_is_initialized = DoInit(plr);
	// Harsh zoom range
	for (var flag in [PLRZOOM_LimitMax, PLRZOOM_Direct])
		SetPlayerZoomByViewRange(plr,400,250,flag);
	SetPlayerViewLock(plr, true);
	// Create per-player-counted tools
	if (g_max_player_num < GetPlayerCount(C4PT_User))
	{
		++g_max_player_num;
		for (var obj in FindObjects(Find_ID(Chest)))
			if (obj.tool_spawn)
				obj->CreateContents(obj.tool_spawn);
	}
Пример #4
0
func InitializePlayer(int plr)
{
	// Players only
	if (GetPlayerType(plr)!=C4PT_User) return;
	// Scenario init
	if (!g_is_initialized) g_is_initialized = DoInit(plr);
	// Harsh zoom range
	for (var flag in [PLRZOOM_LimitMax, PLRZOOM_Direct])
		SetPlayerZoomByViewRange(plr,400,250,flag);
	SetPlayerViewLock(plr, true);
	// Initial join
	var crew = GetCrew(plr);
	crew->SetPosition(35 + Random(10) , 1140);
	crew->SetDir(DIR_Right);
	crew->CreateContents(Shovel);
	crew->CreateContents(Hammer);
	crew->CreateContents(Axe);
	return true;
}
Пример #5
0
void DialogNewGame() {
    FormPtr prevForm, frm;
    UInt16 hitButton;
    Char tmpString[5];
    Char *text;
    UInt16 x;
    UInt16 num;

    // Save previous form
    prevForm = FrmGetActiveForm();
    FrmSetFocus( prevForm, noFocus );

    // Init new form
    frm = FrmInitForm( frmNewGame );

    // Set it
    FrmSetActiveForm(frm);
    FrmDrawForm(frm);

    for( x = 0; x < MaxPlayers; x++ )
    {
        tmppref[x].type = GetPlayerType( x );
        StrCopy( tmppref[x].hname, pref.player[x].hname );
        StrCopy( tmppref[x].aname, pref.player[x].aname );

        DrawUserType( x, tmppref[x].type );

        NewGameSetPlayerName( fldNGname0+x, x );
    }

    // Fill in WinScore with previous value.
    if ( pref.winscore > 9999 ) { // Sanity check...
        pref.winscore = DEFAULT_WINSCORE;
    }
    StrIToA( tmpString, pref.winscore );
    SetFieldTextFromStr( fld_winscore, tmpString );

    // Fill in Opening Roll with previous value.
    if ( pref.openingroll > pref.winscore || pref.openingroll <= 0 ) {
        // Sanity check...
        pref.openingroll = DEFAULT_OPENINGROLL;
    }
    StrIToA( tmpString, pref.openingroll );
    SetFieldTextFromStr( fld_openingroll, tmpString );

    SetFocus( fld_openingroll );

    // Set the handler
    FrmSetEventHandler(frm, DialogNewGameHandleEvent);

    hitButton = FrmDoDialog(frm);

    FrmSetFocus( frm, noFocus );

    if ( hitButton == btn_OK_frmNewGame ) {

        /* Get the score needed to win */
        pref.winscore = DEFAULT_WINSCORE;
        text = FldGetTextPtr( GetObjectPtr( fld_winscore ) );
        if ( text != NULL ) {
            num = StrAToI( text );
            if( num <= 9999 && num >= 50 ) {
                pref.winscore = num;
            }
        }

        /* Get the score needed to open game */
        pref.openingroll = DEFAULT_OPENINGROLL;
        text = FldGetTextPtr( GetObjectPtr( fld_openingroll ) );
        if ( text != NULL ) {
            num = StrAToI( text );
            if( num <= pref.winscore && num >= 0 ) {
                pref.openingroll = num;
            }
        }


        pref.totalplayers = 0;
        for( x = 0; x < MaxPlayers; x++ )
        {
            pref.player[x].type = tmppref[x].type;

            NewGameGetPlayerName( fldNGname0 + x, x );

            StrCopy( pref.player[x].hname,
                     tmppref[x].hname );
            StrCopy( pref.player[x].aname,
                     tmppref[x].aname );

            if( tmppref[x].type != PlayerNone )
            {
                pref.totalplayers++;
            }

        }

        if( pref.totalplayers > 0 )
        {
            NewGame();
        }
    }

    // Delete the form, we're not using it
    FrmDeleteForm(frm);

    // Restore previous form.
    if (prevForm) {
        FrmSetActiveForm(prevForm);
    }

    DrawState();
}
Пример #6
0
func QueryRejectRespawnPlayer(plr)
{
	return GetPlayerType(plr) == C4PT_Script;
}
Пример #7
0
/************************************************************************
VịLH - GetSkillIDFromName - 22/05/2013
	Trả vể ID skill ứng với tên skill
params:
	CString: tên skill
return:
	int: id skill
*************************************************************************/
int CCharacter::GetSkillIDFromName(const CString& name)
{	
	int iSkillID = 0;
	DWORD dwType = GetPlayerType();
	switch (dwType)
	{
		case GIAPSI: case GIAPSI2:
			if (name == L"Tế Huyết Trảm")
				iSkillID = S_GS_TE_HUYET_TRAM;
			else if (name == L"Hồi Phong Trảm")
				iSkillID = S_GS_HOI_PHONG_TRAM;
			else if (name == L"Hoành Không Trảm")
				iSkillID = S_GS_HOANH_KHONG_TRAM;
			else if (name == L"Huyền Băng Trảm")
				iSkillID = S_GS_HUYEN_BANG_TRAM;
			else if (name == L"Liên Hoàn Trảm")
				iSkillID = S_GS_LIEN_HOAN_TRAM;
			else if (name == L"Thiên Quân Trảm")
				iSkillID = S_GS_THIEN_QUAN_TRAM;
			else if (name == L"Khai Sơn Trảm")
				iSkillID = S_GS_KHAI_SON_TRAM;
			else if (name == L"Điện Quang Trảm")
				iSkillID = S_GS_DIEN_QUANG_TRAM;
			else if (name == L"Tam Đầu Lục Thủ")
				iSkillID = S_GS_TAM_DAU_LUC_THU;
			else if (name == L"Hỏa Quang Trảm")
				iSkillID = S_GS_HOA_QUANG_TRAM;
			else if (name == L"Lạc Địa Trảm")
				iSkillID = S_GS_LAC_DIA_TRAM;
			else if (name == L"Khuynh Thành Nhất Kích")
				iSkillID = S_GS_KHUYNH_THANH_NHAT_KICH;
			break;

		case DAOSI: case DAOSI2:
			if (name == L"Chưởng Tâm Lôi")
				iSkillID = S_DS_CHUONG_TAM_LOI;
			else if (name == L"Hạn Địa Lôi")
				iSkillID = S_DS_HAN_DIA_LOI;
			else if (name == L"Phong Vân Lôi Động")
				iSkillID = S_DS_PHONG_VAN_LOI_DONG;
			else if (name == L"Lôi Động Cửu Thiên")
				iSkillID = S_DS_LOI_DONG_CUU_THIEN;
			else if (name == L"Lưu Tinh Thạch")
				iSkillID = S_DS_LUU_TINH_THACH;
			else if (name == L"Thiên Phong Địa Nhận")
				iSkillID = S_DS_THIEN_PHONG_DIA_NHAN;
			else if (name == L"Ngũ Nhạc Triều Tông")
				iSkillID = S_DS_NGU_NHAC_TRIEU_TONG;
			else if (name == L"Thiên Băng Địa Liệt")
				iSkillID = S_DS_THIEN_BANG_DIA_LIET;
			else if (name == L"Huyền Nữ Bổ Thiên")
				iSkillID = S_DS_HUYEN_NU_BO_THIEN;
			else if (name == L"Băng Tuyết Đạn")
				iSkillID = S_DS_BANG_TUYET_DAN;
			else if (name == L"Thiết Mã Băng Qua")
				iSkillID = S_DS_THIET_MA_BANG_QUA;
			else if (name == L"Băng Phong Bạo")
				iSkillID = S_DS_BANG_PHONG_DAO;
			else if (name == L"Băng Phong Vạn Lý")
				iSkillID = S_DS_BANG_PHONG_VAN_LY;
			else if (name == L"Tích Lịch Hỏa")
				iSkillID = S_DS_TICH_LICH_HOA;
			else if (name == L"Phong Lâm Hỏa Sơn")
				iSkillID = S_DS_PHONG_LAM_HOA_SON;
			else if (name == L"Thập Phương Liệt Hỏa")
				iSkillID = S_DS_THAP_PHUONG_LIET_HOA;
			else if (name == L"Tam Muội Chân Hỏa")
				iSkillID = S_DS_TAM_MUOI_CHAN_HOA;

			break;

		case DINHAN: case DINHAN2:
			if (name == L"Thôi Thần Chú")
				iSkillID = S_DN_THOI_THAN_CHU;
			else if (name == L"Phá Giáp Chú")
				iSkillID = S_DN_PHA_GIAP_CHU;
			else if (name == L"Trảm Tâm Chú")
				iSkillID = S_DN_TRAM_TAM_CHU;
			else if (name == L"Vạn Cốt Toàn Khô")
				iSkillID = S_DN_VAN_COT_TOAN_KHO;
			
			break;

	}	
	
	return iSkillID;
}