Показать сообщение отдельно
Старый 04.03.2009, 12:21   #2168
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2dimmell:
И можно по-подробнее, какие можно использовать объекты и нужно ли как-нибудь этот объект описывать в скриптах
[pre]
Могу привести исходник этой функции из движка, кто знает скрипты, тот поймет её действие:
[pre]int Wld_InsertObject()
{
* * *zCParser* par = zCParser::GetParser();
* * *zSTRING name, point;
* * *par->GetParameter(point);
* * *par->GetParameter(name);
* * *zVEC3 vp = 0;
* * *zCWaypoint* wp = ogame->GetWorld()->m_pWayNet->GetWaypoint(point);
* * *if(wp)
* * * * * *vp = wp->GetPositionWorld();
* * *else
* * *{
* * * * * *zCVob* pVob = ogame->GetWorld()->SearchVobByName(point);
* * * * * *if(!pVob)
* * * * * *{
* * * * * * * * *zerr.Report(zTYPE_WARN, "U: AI: Spawnpoint " + point + " not found. Object " + name + " cannot be spawned.");
* * * * * * * * *return 0;
* * * * * *}
* * * * * *vp = pVob->GetPositionWorld();
* * *}
* * *oCMOB* pMob = new oCMOB();
* * *pMob->zCVob::SetVisual(name);
* * *pMob->f.tTakeable = FALSE;
* * *pMob->SetCollDet(FALSE);
* * *ogame->GetSelfPlayerVob()->m_pWorld->AddVob(pMob);
* * *pMob->SetOnFloor(vp);
* * *pMob->SetCollDet(TRUE);
* * *pMob->SetPhysicsEnabled(TRUE);
* * *pMob->SetSleeping(TRUE);
* * *pMob->Release();
* * *return 0;
}[/pre]
и для сравнения всем знакомая функция
[pre]int Wld_InsertItem()
{
* * *zCParser* par = zCParser::GetParser();
* * *zSTRING point;
* * *par->GetParameter(point);
* * *int instance;
* * *par->GetParameter(instance);
* * *oCVob* pItem = ogame->GetGameWorld()->CreateVob(zTVOB_ITEM, instance);
* * *if(!pItem)
* * * * * *return 0;
* * *zVEC3 pos;
* * *zCWaypoint* wp = ogame->GetWorld()->m_pWayNet->GetWaypoint(point);
* * *if(wp)
* * * * * *pos = wp->GetPositionWorld();
* * *else
* * *{
* * * * * *zCVob* pVob = ogame->GetGameWorld()->SearchVobByName(point);
* * * * * *if(!pVob)
* * * * * * * * *zerr.Report(zTYPE_WARN, "U:WLD: Position-Vob " + point + " not found.");
* * * * * *else
* * * * * * * * *pos = pVob->GetPositionWorld();
* * *}
* * *pItem->SetPositionWorld(pos);
* * *ogame->GetGameWorld()->AddVob(pItem);
* * *pItem->Release();
* * *return 0;
}
[/pre]
Ответить с цитированием